0

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.

J2H656
  • 101
  • 1
  • 16

3 Answers3

4

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.

haki
  • 9,389
  • 15
  • 62
  • 110
  • Thanks! i saw that i had to add the "into" after the execute Immediate and that i had to remove the into within the select statement – J2H656 May 21 '13 at 08:54
2

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;
Alex Poole
  • 183,384
  • 11
  • 179
  • 318
  • Yeah i know, but it is required of me to use it as a dynamic query. Thanks for your answer though! – J2H656 May 21 '13 at 10:17
1

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;
Md Sultan
  • 39
  • 5