Ich habe ein lästiges Problem, wo ich zwei Parameter in eine gespeicherte Prozedur übergeben und sie für die Verwendung innerhalb der WHERE-Klausel meiner Aussage zusammenfügen. Der erste Parameter wird in einem equals-Ausdruck verwendet, während der zweite Parameter eine AND-Klausel bildet.gespeicherte Prozedur verketten zwei Parameter in where-Klausel
Der folgende Auszug des gespeicherten Proc, zeigt, was ich versuche zu tun.
Declare @CombinedWhereClause varchar(500), @Sender varchar(10), @AndClause char(200)
Set @Sender = 'Wayne';
Set @AndClause = ' AND Convert(varchar(8), MessageDate, 112) < DATEADD(day, -10, GETDATE())';
Set @CombinedWhereClause = @Sender + @AndClause;
SELECT Messages.Id, Messages.IdExternal, Messages.MessageReference,
FROM Messages
WHERE Messages.Sender [email protected]
Wenn ich ersetzen die @CombinedWhereClause mit @Sender nur dann bekomme ich die erwarteten Datensätze zurück. Wenn ich die WHERE-Klausel ändere, um zu sein:
dann bekomme ich alle Datensätze, die 10 Tage alt sind. Kombiniert bekomme ich jedoch keine Ergebnisse.
Bitte beachten Sie die dbms markieren. (Das ist produktspezifischer Code.) – jarlh
Welches RDBMS (Hersteller und Version)? Erwarten Sie wirklich, dass die Db-Engine wissen könnte, dass die Zeichenfolge, mit der Sie vergleichen, keine Zeichenfolge, sondern eine Where-Klausel-Erweiterung ist? Dies ist nur mit dynamischem SQL möglich ... – Shnugo
Ich nehme sql server wegen der 'getdate()' und 'convert()' Syntax an. Wie auch immer, ich kenne keine rdbms, die reguläre SQL und dynamische SQL kombinieren können. –