2013-05-21 28 views
0

目前我得到這個錯誤ORA-06550 PLS-00103出現符號「版本」 ......立即執行:出現符號

任何一個可以幫助我糾正這個問題?非常感激!

declare 
sql_stmnt VARCHAR(200); 
lsparameter varchar(50); 
lsparameterdata varchar(20); 

begin 
sql_stmnt := 'SELECT parameter, parameter_data into lsparameter, lsparameterdata FROM MyTable WHERE parameter = 'version''; 
EXECUTE IMMEDIATE sql_stmnt; 
end; 

我知道我已經在where子句中將參數設置爲「version」。我想從MyTable中檢索參數和parameter_data來檢查版本,然後繼續我的函數的其餘部分。

在此先感謝。

回答

3

你需要逃脫字符'這樣

sql_stmnt := 'SELECT parameter, parameter_data into lsparameter, lsparameterdata FROM MyTable WHERE parameter = ''version'''; 

和你缺少一個到後立即執行。

+0

謝謝!我看到我必須在執行Immediate後添加「into」,並且我必須在select語句中刪除into – J2H656

2

你不需要動態SQL爲此不惜一切,你可以這樣做:

declare 
    lsparameter varchar(50); 
    lsparameterdata varchar(20); 
begin 
    select parameter, parameter_data 
    into lsparameter, lsparameterdata 
    from MyTable 
    where parameter = 'version'; 
    ... -- rest of your function 
end; 
+0

是的,我知道,但是我需要將它用作動態查詢。謝謝你的回答! – J2H656

1

你可以試試這個:

declare 
sql_stmnt VARCHAR2(200); 
lsparameter VARCHAR2(50); 
lsparameterdata VARCHAR2(20); 
begin 
sql_stmnt := q'{SELECT parameter, parameter_data into :lsparameter, :lsparameterdata FROM MyTable WHERE parameter = 'version'}'; 
EXECUTE IMMEDIATE sql_stmnt into lsparameter,lsparameterdata; 
end;