16. september 2000 - 22:25Der er
7 kommentarer og 1 løsning
Nested SP
Så løb jeg panden mod muren, jeg står og skal lave en stored procedure (dvs. det er i praksis 2), der kaldes med nogle parametre, nogle af parametrene skal så igen bruges til at kalde en anden SP der skal returnere sit ID til den første... De to tabeller ser cirka sådan ud: CREATE TABLE Skema( ID Int Not Null, Uge1 Int Not Null, Uge2 Int Not Null, Uge3 Int Not Null, Uge4 Int Not Null, Uge5 Int Not Null, Uge6 Int Not Null, Uge7 Int Not Null, Uge8 Int Not Null, Klasse Int Not Null ) ON SecondaryFileGroup
CREATE TABLE Uge( ID Int IDENTITY, UgeNr TinyInt Not Null, Beskrivelse Varchar(500) Not Null ) ON TertiaryFileGroup
Ideen og problemet er så at få lavet de 2 SP\'er til hhv. Skema og Uge, hvor jeg indtil nu er nået til at \"Skema\" skal modtage parametre for klasse, og 8x beskrivelse + 8x ugenr, 8 gange (for hver af de 8 beskrivelse + ugenr) skal den så kalde Uge SP\'en, der skal returnere sit ID og til sidst skal Skema SP\'en så selv indsætte en ny post i Skema entiteten, med klasse (parameter), og de 8 returnerede ID\'s fra Uge SP\'en...
CREATE PROCEDURE SP_Uge @Beskrivelse varchar(500), @UgeNr tinyint, @ID int OUTPUT AS BEGIN INSERT INTO Uge (UgeNr, Beskrivelse) VALUES(@UgeNr, @Beskrivelse) SET @ID = @@IDENTITY END
Jeg regnede med at du mente at du i SP_Uge ville indsætte de værdier i tabellen, og så returnere den ID som de blev genereret af Identity værdien...
Hvis du ville slå op i Uge tabellen baseret på værdierne så :
CREATE PROCEDURE SP_Uge @Beskrivelse varchar(500), @UgeNr tinyint, @ID int OUTPUT AS BEGIN SELECT @ID = ID FROM Uge WHERE UgeNr = @UgeNr AND Beskrivelse = @Beskrivelse END
Det ligner ikke helt den løsning jeg selv kom frem til men tæt på...(Greb den sidste udvej, da systemet SKULLE være færdigt og afleveret 22/9, og kontaktede en forfatter til en SQL Server prog. bog, som venligt nok mindede mig om at kalde en SP med named parameters...
Tjaa... valgte at undlade transact-SQL osv., så sådan her: CREATE PROCEDURE SP_NyUge @UgeNr TinyInt, @Besk Varchar(500), @NytID int OUTPUT WITH RECOMPILE AS INSERT INTO Uge VALUES (@UgeNr, @Besk) SELECT @NytID = @@IDENTITY GO
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.