webForumDet fria alternativet

stored procedure

8 svar · 280 visningar · startad av Gimbo

GimboMedlem sedan dec. 20001 630 inlägg
#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???

LarsGMedlem sedan dec. 200012 465 inlägg
#2

Anropa den med hjälp av SQL

execute procedureName parameters
GimboMedlem sedan dec. 20001 630 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

@ndersMedlem sedan juni 200026 914 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.

GimboMedlem sedan dec. 20001 630 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
LarsGMedlem sedan dec. 200012 465 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. :)

GimboMedlem sedan dec. 20001 630 inlägg
#7

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

LarsGMedlem sedan dec. 200012 465 inlägg
#8

Nej, 'PE' eller 'PP'

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

GimboMedlem sedan dec. 20001 630 inlägg
#9

oki man tackar

130 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
126 ms — hämta tråd, inlägg och bilagor (db)