![]() |
Datenbank: MS-SQL • Version: 2000 • Zugriff über: ADO
StoredProc
Hallo,
habe eine Frage zum Verständnis, habe diesen String in einer Gespeicherten Prozedure auf dem Server:
Delphi-Quellcode:
möchte aus der Ergebnissmänge der SELECT-Anweisung eine IF-Abfrage machen die mir sagt, ob der Wert (@FormNr) auch wirklich in der Ergebnissmänge liegt! Da ich die SELECT-Anweisung nicht direkt vergleichen kann, habe ich erst einmal
CREATE PROCEDURE SP_IMPORT_FORM
@FormNr VARCHAR(5) = NULL AS SELECT * FROM MPK_FORM WHERE FORMNR = @FormNr IF @FormNr = '' BEGIN SELECT * FROM MPK_DEKOR END ELSE BEGIN SELECT * FROM MPK_SAMMEL END GO
Delphi-Quellcode:
dafür stehen.
@FormNr = ''
Ist der Ansatz richtig oder liege ich völlig falsch? |
Re: StoredProc
Hallo,
kannst du dein Problem etwas genauer beschreiben? Dein SP-Code macht für mich keinen Sinn. Grüße vom marabu |
Re: StoredProc
Vielleicht meinst Du das:
SQL-Code:
Gruß,
if exists(select <feldname> from <tabelle> where <feldname> = @FormNr)
begin ... end Marcel |
Re: StoredProc
So funktioniert es ...
Du musst prüfen ob die initiale Abfrage "SELECT * FROM MPK_FORM WHERE FORMNR = @FormNr" Datensätze zurückgibt ...
SQL-Code:
Die Variante von Marcel funktioniert auch, jedoch machst du dann einen zusätzlichen (unnötigen) Funktionsaufruf (EXISTS), den wir mit meiner Methode vermeiden können.
CREATE PROCEDURE SP_IMPORT_FORM
@FormNr VARCHAR(5) = NULL AS -- versuche @FormNr in MPK_FORM zu finden SELECT * FROM MPK_FORM WHERE FORMNR = @FormNr -- wenn @@ROWCOUNT = 0 (also kein Datensatz zurückgegeben) IF @@ROWCOUNT = 0 BEGIN -- Gib alle Spalten und alle Datensätze der Tabelle MPK_DEKOR zurück SELECT * FROM MPK_DEKOR END ELSE BEGIN -- Gib alle Spalten und alle Datensätze der Tabelle MPK_SAMMEL zurück SELECT * FROM MPK_SAMMEL END GO @@ROWCOUNT wird standardmäßig bei jedem INSERT, UPDATE, SELECT, DELETE zurückgegeben. |
Re: StoredProc
@Marcel: Wunderbar, dass ist genau was ich gesucht habe. Vielen Dank.
@jensw_2000: Bei deiner Variante bekomme ich nur die Ergebnismenge der SELECT-Abfrage raus, und nicht die in der IF-Abfrage sind. |
Re: StoredProc
Habe jetzt ein neues Problem, wenn ich diese Prozedur
Delphi-Quellcode:
ausführe, bekomme ich eine Fehlermeldung die lautet: "ADOStoredProc: CommandText gibt keine Ergebnismenge zurück".
CREATE PROCEDURE SP_IMPORT_FORM
@FormNr VARCHAR(5) = NULL, @FormBez VARCHAR(30) = NULL AS IF NOT EXISTS (SELECT * FROM MPK_FORM WHERE FORMNR = @FormNr) BEGIN INSERT INTO MPK_FORM (FORMNR, BEZ_DEU) VALUES (@FormNr, @FormBez) END GO Was heißt das? |
Re: StoredProc
Zitat:
|
Re: StoredProc
Zitat:
SQL-Code:
CREATE PROCEDURE SP_IMPORT_FORM
@FormNr VARCHAR(5) = NULL, @FormBez VARCHAR(30) = NULL AS BEGIN IF NOT EXISTS (SELECT * FROM MPK_FORM WHERE FORMNR = @FormNr) BEGIN INSERT INTO MPK_FORM (FORMNR, BEZ_DEU) VALUES (@FormNr, @FormBez) SELECT ROWS = @@ROWCOUNT END ELSE SELECT ROWS = 0 END GO Gruß, Marcel |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz