Ich habe ein Problem mit der Verwendung von Parameter in PSQL. Wie Sie den Parameter in where-Klausel richtig verwenden. Es gibt keine Fehler beim Kompilieren der Prozedur, die ich unten aufgeführt habe. Aber keine Ergebnisse, wenn ich 'Bla Bla Bla' String übergeben.Verwendung von Parameter in PSQL
CREATE PROCEDURE SELECTCATALOGUE (
TXT VARCHAR(30))
RETURNS (
CODE VARCHAR(9),
NAME VARCHAR(50))
AS
BEGIN
for execute statement
'select code,name
from catalogue
where name='||:TXT
into :CODE,:NAME
do
suspend;
END
Aber, wenn ich ausführen dieses Verfahren durch die Parameter zum Beispiel ersetzt:
CREATE PROCEDURE SELECTCATALOGUE (
TXT VARCHAR(30))
RETURNS (
CODE VARCHAR(9),
NAME VARCHAR(50))
AS
BEGIN
for execute statement
'select code,name
from catalogue
where name=''bla bla bla'''
into :CODE,:NAME
do
suspend;
END
ich Ergebnisse richtig zu bekommen. Fehle ich etwas, wie kann ich es funktionieren lassen?
EDIT: Ok, hier ist noch eine Sache. Dieses Verfahren:
CREATE PROCEDURE SELECTCATALOGUE
RETURNS (
CODE VARCHAR(9),
NAME VARCHAR(50))
AS
declare variable stmt varchar(1000);
declare variable paramTXT varchar(100);
declare variable paramTXT1 varchar(100);
declare variable T varchar(1000);
BEGIN
paramTXT='PLO'||'%';
paramTXT1='REM'||'%';
T='paramTXT,paramTXT1';
stmt='select code,name
from catalogue
where name like ? or name like ? order by name';
for execute statement (
stmt
)
(paramTXT,paramTXT1)
into :CODE,:NAME
do
suspend;
END
Gibt mir richtige Ergebnisse zurück. Gibt es eine Möglichkeit, die Zeichenfolge "T" stattdessen "(paramTXT, paramTXT1)" zu verwenden, und das kann mir Ergebnisse liefern?
Ich habe Frage (Beispiel oben) bearbeitet, manchmal wäre es nicht nur ein Parameter, also dachte ich, dass es gut sein könnte, etwas wie String als Parameter zu verwenden. Ist es möglich? –
Nicht bei parametrisierter Anweisung. Sie könnten sie mit der Anweisung verketten (wie Ihr allererstes Beispiel, aber achten Sie darauf, Anführungszeichen um die: TXT hinzuzufügen), aber das ist unsicher, besser, parametrisierte Anweisung zu verwenden. – ain