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 子句中将参数设置为“版本”。我想从 MyTable 中检索参数和 parameter_data 以检查版本,然后继续我的其余功能。

提前致谢。

4

3 回答 3

4

你需要'像这样逃避角色

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

并且您在立即执行后丢失了一个 into。

于 2013-05-21T08:44:42.237 回答
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;
于 2013-05-21T09:30:16.780 回答
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;
于 2016-05-06T07:15:50.070 回答