Hallo ich habe eine Prozedur geschrieben, in der ich eine UDF aufrufe.
Sie funktioniert gut, bis auf den call der anderen UDF, könnte mir bitte einer einen Hinweis geben was ich falsch gemacht habe, Quellcode folgt.
Ich habe irgdnwei das Gefühl dass der durch @art_kat übergebene Datentyp nicht stimmt, denn wenn ich die angesprochene Funktion selbst aufrufe funktioniert es!
Sie funktioniert gut, bis auf den call der anderen UDF, könnte mir bitte einer einen Hinweis geben was ich falsch gemacht habe, Quellcode folgt.
Ich habe irgdnwei das Gefühl dass der durch @art_kat übergebene Datentyp nicht stimmt, denn wenn ich die angesprochene Funktion selbst aufrufe funktioniert es!
/* Prozedur Art_Buchen
@args: @art_id: Artikelid, zu der ein neues Stück eingefügt werden soll
@args: @serien_nr Artikel Seriennummer
Die Prozedur ist dazu da Einzelartikel eines Typs einzubuchen. Dabei versieht sie Artikel ohne Seriennummer
mit einer selbstgenerierten Seriennummer, sonst übernimmt sie die normale Seriennummer!
Benutzt die FUnktion Art_Seriennummer
*/
-- Prozedur zum Buchen eines Artikels
CREATE PROCEDURE Art_Buchen
@art_id UNIQUEIDENTIFIER,
@serien_nr VARCHAR(32)
AS
BEGIN
DECLARE @serien_gen VARCHAR(32),
@art_kat UNIQUEIDENTIFIER
-- füge die Eingabeparameter in die Artikel_Detail und die Artikel Tabelle ein
-- Konvention zu Einscannen der Warengruppen:
--Zunächst wird ein Code des Artikeltyps eingescannt, danach die Seriennummer des Artikels
--Falls es keine Seriennummer gibt wird automatisch eine interne Kennung generiert
-- finde die Kategorie der Artikel heraus
SELECT @art_kat = Kategorie FROM Artikel WHERE id = @art_id
IF @serien_nr = ''
-- neue interne ID erzeugen
BEGIN
EXEC @serien_gen = dbo.Art_Seriennummer @art_id = @art_kat
PRINT @serien_gen
END
ELSE
BEGIN
SET @serien_gen = @serien_nr
END
IF EXISTS(SELECT * from Artikel A, Artikel_Detail D WHERE A.id = @art_id AND A.id = D.ArtikelID AND D.Seriennummer = @serien_gen)
BEGIN
RAISERROR ('Artikel existiert bereits!',16,1)
END
ELSE
BEGIN
INSERT INTO Artikel_Detail (id,ArtikelID,Seriennummer,Seriennummertyp) VALUES (NEWID(),@art_id,@serien_nr,'S')
END
END
@args: @art_id: Artikelid, zu der ein neues Stück eingefügt werden soll
@args: @serien_nr Artikel Seriennummer
Die Prozedur ist dazu da Einzelartikel eines Typs einzubuchen. Dabei versieht sie Artikel ohne Seriennummer
mit einer selbstgenerierten Seriennummer, sonst übernimmt sie die normale Seriennummer!
Benutzt die FUnktion Art_Seriennummer
*/
-- Prozedur zum Buchen eines Artikels
CREATE PROCEDURE Art_Buchen
@art_id UNIQUEIDENTIFIER,
@serien_nr VARCHAR(32)
AS
BEGIN
DECLARE @serien_gen VARCHAR(32),
@art_kat UNIQUEIDENTIFIER
-- füge die Eingabeparameter in die Artikel_Detail und die Artikel Tabelle ein
-- Konvention zu Einscannen der Warengruppen:
--Zunächst wird ein Code des Artikeltyps eingescannt, danach die Seriennummer des Artikels
--Falls es keine Seriennummer gibt wird automatisch eine interne Kennung generiert
-- finde die Kategorie der Artikel heraus
SELECT @art_kat = Kategorie FROM Artikel WHERE id = @art_id
IF @serien_nr = ''
-- neue interne ID erzeugen
BEGIN
EXEC @serien_gen = dbo.Art_Seriennummer @art_id = @art_kat
PRINT @serien_gen
END
ELSE
BEGIN
SET @serien_gen = @serien_nr
END
IF EXISTS(SELECT * from Artikel A, Artikel_Detail D WHERE A.id = @art_id AND A.id = D.ArtikelID AND D.Seriennummer = @serien_gen)
BEGIN
RAISERROR ('Artikel existiert bereits!',16,1)
END
ELSE
BEGIN
INSERT INTO Artikel_Detail (id,ArtikelID,Seriennummer,Seriennummertyp) VALUES (NEWID(),@art_id,@serien_nr,'S')
END
END
Comment