you need to escape the character '
like this
sql_stmnt := 'SELECT parameter, parameter_data into lsparameter, lsparameterdata FROM MyTable WHERE parameter = ''version''';
and your are missing an into after the execute immediate.
سؤال
i am currently getting this error ORA-06550 PLS-00103 Encountered the symbol "VERSION"...
Can any one help me rectify this problem? Much appreciated!
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;
I know i am already setting the parameter to "version" in the where clause. I want to retrieve the parameter and parameter_data from MyTable to check the version and then to continue with the rest of my function.
Thanks in advance.
المحلول
you need to escape the character '
like this
sql_stmnt := 'SELECT parameter, parameter_data into lsparameter, lsparameterdata FROM MyTable WHERE parameter = ''version''';
and your are missing an into after the execute immediate.
نصائح أخرى
You don't need dynamic SQL for this at all, you can just do:
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;
You can try this :
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;