psql에서 매개 변수를 사용하는 데 문제가 있습니다. where 절에서 매개 변수를 올바르게 사용하는 방법. 아래에 나열된 절차를 컴파일하는 중에 오류가 없습니다. 하지만 'bla bla bla'문자열을 전달하면 결과가 없습니다.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
하지만, 예를 들어 매개 변수를 대체하여이 절차를 실행할 때 : 내가 제대로 결과를 얻고있다
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
. 나는 뭔가를 놓치고, 어떻게 작동 시키는가?
편집 : 여기에 한 가지 더 있습니다. 이 절차 :
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
올바른 결과를 돌려줍니다. "T"문자열 대신 "(paramTXT, paramTXT1)"을 사용하는 방법이 있습니까? 그 결과를 얻을 수 있습니까? 당신이 문자열 bla bla bla
주위에 따옴표 없기 때문에 엔진이 일반적으로 열 이름으로 취급해야한다고 볼
select code,name from catalogue where name=bla bla bla
:
첫 번째 버전에서
질문 (예 : 위의 예)을 편집 한 적이 있는데 때로는 단 하나의 매개 변수가 아니므로 문자열과 같이 매개 변수로 전달하는 것이 좋을 것이라고 생각했습니다. 가능한가? –
매개 변수화 된 문을 사용하지 않습니다. 첫 번째 예와 같이 명령문에 연결할 수 있지만 (: TXT) 따옴표를 추가하는 데주의를 기울이지 만 안전하지 않으므로 매개 변수화 된 명령문을 사용하는 것이 좋습니다. – ain