Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Escape / (Forward Slash) in SQL*Plus

835129Jan 28 2011 — edited Jan 28 2011
DB: Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production
PL/SQL Release 11.1.0.7.0 - Production
CORE 11.1.0.7.0 Production
TNS for IBM/AIX RISC System/6000: Version 11.1.0.7.0 - Production
NLSRTL Version 11.1.0.7.0 - Production

I am running following anonymous block and it's giving error. It's because SQL Plus is considering forward slash (/) in variable "a" assignment as block terminator. How to escape that? The use of following block is to store test case in Database. This is simple example real test cases are complex and involve print after /.
DECLARE
  A   varchar2(1024) := NULL;
BEGIN
  A := 'set serveroutput on;
BEGIN
  INSERT INTO table_name
       VALUES (5067);
END ;
/

' ;
    INSERT INTO x VALUES (A) ;

       COMMIT ;
END ;
/
Output
SQL> DECLARE
  2    A   varchar2(1024) := NULL;
  3  BEGIN
  4    A := 'set serveroutput on;
  5  BEGIN
  6    INSERT INTO table_name
  7         VALUES (5067);
  8  END ;
  9  /
ERROR:
ORA-01756: quoted string not properly terminated


SQL> 
SQL> ' ;
SP2-0042: unknown command "' " - rest of line ignored.
SQL>     INSERT INTO x VALUES (A) ;
    INSERT INTO x VALUES (A)
                          *
ERROR at line 1:
ORA-00984: column not allowed here


SQL> 
SQL>        COMMIT ;

Commit complete.

SQL> END ;
SP2-0042: unknown command "END " - rest of line ignored.
SQL> /

Commit complete.

SQL> 
Running same block from Toad works fine.

Please help!

Thank You!
Arpit
This post has been answered by Frank Kulash on Jan 28 2011
Jump to Answer
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Feb 25 2011
Added on Jan 28 2011
7 comments
12,216 views