سؤال

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;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top