GimboMedlem sedan dec. 20001 630 inlägg 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 Anropa den med hjälp av SQL
execute procedureName parameters
GimboMedlem sedan dec. 20001 630 inlägg 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 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 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 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 sa som parameter skall jag ange typ "PP" eller "PE" ??
LarsGMedlem sedan dec. 200012 465 inlägg Nej, 'PE' eller 'PP'
Använd inte " som strängavgränsare i SQL.