webForumDet fria alternativet

stored procedure

Databaser & SQL

8 svar · 280 visningar · startad av Gimbo

Medlem sedan dec. 20001 626 inlägg
Frågan#1

hejsan,

har en SP i sql databasen, som enligt vad jag har uppfattat det, da jag kor den sa skall all info fran en tabell matas in i en annan tabell, men jag fattar inte hur man skall gora for att kora denna SP'n???? jag hoger klickar pa den, men finns inget som heter run???

Medlem sedan dec. 200012 464 inlägg
#2

Anropa den med hjälp av SQL

execute procedureName parameters
Medlem sedan dec. 20001 626 inlägg
#3

hur ska jag veta vad parametrarna ar, eller ska vara?

nar jag inte skriver nagra params sa sager den:
att den vill ha @ProductNumber... men det jag misstanker e att productNumber skall komma ifran en annan tabell(?)

hur vet jag vad parametesn skall vara???

dvs det SP'n gor e att den tar alla producter ur en tabell och insatter de i en annan tabell... e det mojligt att hamta pructNumber fran en annan tabell

/red

Medlem sedan juni 200032 967 inlägg
#4

Det verkar livsfarligt att köra en SP som du inte vet vad den förväntar sig eller vad den ska göra.

Kontrollera med den som upplyst dig om procedurens funktion om hur du ska exekvera den.

Du kan ju också kika på koden till proceduren och den vägen ta reda på hur du ska exekvera den.

Medlem sedan dec. 20001 626 inlägg
#5

sa har ser SP'n ut:


CREATE PROCEDURE dbo.sp_updateProductAlsoAvailableIn
@ProductNumber	varchar(30)
AS

Declare
@StirpedProductNumber varchar(30),
@itemNumber	varchar(30),
@item varchar(30)

Select @StirpedProductNumber = 
case 
 when right(@ProductNumber, 2) = 'PP' then left(@ProductNumber, len(@ProductNumber) - 2)
 when right(@ProductNumber, 2) = 'PE' then left(@ProductNumber, len(@ProductNumber) - 2)
 when right(@ProductNumber, 2) = 'WE' then left(@ProductNumber, len(@ProductNumber) - 2)
 when right(@ProductNumber, 1) = 'W' then left(@ProductNumber, len(@ProductNumber) - 1)
 when right(@ProductNumber, 1) = 'E' then left(@ProductNumber, len(@ProductNumber) - 1)
 else @ProductNumber
end

-- first delete from ProductAlsoAvailableIn this will be inserted again
delete from ProductAlsoAvailableIn where ProductNumber like @StirpedProductNumber + '%'

DECLARE p_cursor CURSOR FOR 
   SELECT productNumber
   FROM inventory
   where Discontinued = 0
	and productNumber like @StirpedProductNumber + '%'

   OPEN p_cursor
   FETCH NEXT FROM p_cursor INTO @ProductNumber

   WHILE @@FETCH_STATUS = 0
   BEGIN

declare u_cursor cursor for
 select productNumber,
		case
		 when right(ProductNumber,2) = 'PP' then 'Platinum'
		 when right(ProductNumber,2) = 'PE' then 'Platinum & 18 kt'
		 when right(ProductNumber,2) = 'WE' then '18kt White Gold'
		 when right(ProductNumber,1) = 'W' then '14kt White Gold'
		 when right(ProductNumber,1) = 'E' then '18 kt'
		 else '14 kt'
		end as Metal
		from inventory
		where productnumber like @StirpedProductNumber + '%'
		and productnumber <> @ProductNumber
		and Discontinued = 0
		
		open u_cursor
		Fetch next from u_cursor into @itemNumber, @item
		if @@Fetch_status = 0
		begin
			insert into ProductAlsoAvailableIn(ProductNumber, AlsoIn)
			values (@ProductNumber, '')
		end

	   WHILE @@FETCH_STATUS = 0
	   BEGIN
		update ProductAlsoAvailableIn
		set AlsoIn =  ltrim(rtrim(AlsoIn)) + ', ' + '<a href="domain.asp?n=' + ltrim(rtrim(@itemNumber)) + '">' + ltrim(rtrim(@item)) + '</a>'
		where productnumber = @productnumber

		FETCH NEXT FROM u_cursor INTO @itemNumber, @item
	    end
CLOSE u_cursor
DEALLOCATE u_cursor

update ProductAlsoAvailableIn
set alsoin = '' + right(alsoin, len(alsoin)-2)
where productnumber = @productnumber

      FETCH NEXT FROM p_cursor INTO @ProductNumber
   
   END

CLOSE p_cursor
DEALLOCATE p_cursor
GO
Medlem sedan dec. 200012 464 inlägg
#6

Proceduren tar en parameter som är en sträng med max 30 tecken som utgör ett produktnummer. Proceduren verkar inte göra något direkt farligt. :)

Medlem sedan dec. 20001 626 inlägg
#7

sa som parameter skall jag ange typ "PP" eller "PE" ??

Medlem sedan dec. 200012 464 inlägg
#8

Nej, 'PE' eller 'PP'

Använd inte " som strängavgränsare i SQL.

Medlem sedan dec. 20001 626 inlägg
#9

oki man tackar

264 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)