sql 缺少语法和错误处理

sql syntax is missing & error handling

我想处理 sql 脚本中的错误,我已经为 it.But 设置了一些无法正常工作的语句。我想我缺少开始和结束声明的位置。 这是我的 sql 脚本,请更正它。

set colsep ',';
set trimout off;
set pagesize 0;
set trimspool off;
set feedback off;
set heading off;
set heading off;
set verify off;
set errorlogging on;
var envame varchar2(20)
exec :envame := '&1'
set errorlogging on;
spool C:\UsersDesktop\batch\pres64.csv app
begin
select '&&1', user_name, user_id from employee where designation = 'manager';

exception
when others then
dbms_output.put_line('ERROR');
end;

exit;

输出为 12 13 14 15 . . 请提出修改意见..

spool C:\UsersDesktop\batch\pres64.csv app

begin

select '&&1', user_name, user_id from employee where designation = 'manager';

exception when others then

dbms_output.put_line('ERROR');

您将 SQL*PlusPL/SQL 异常处理混为一谈。 SPOOL 是一个 SQL*Plus 命令。如果您使用 BEGIN-END PL/SQL 块,它将不起作用。

由于您正在使用 SQL*Plus,我强烈建议您使用新的 SQL*Plus 错误记录功能 而不是在 [=29] =]PL/SQL。它是在 版本 11.1 中引入的。

我在这里写了一篇关于它的文章http://lalitkumarb.wordpress.com/2014/01/21/sqlplus-error-logging-new-feature-release-11-1/

例如,

SQL> set errorlogging on
SQL> show errorlogging
errorlogging is ON TABLE LALIT.SPERRORLOG
SQL> desc sperrorlog
 Name                                      Null?    Type
 ----------------------------------------- -------- -----------------------
 USERNAME                                           VARCHAR2(256)
 TIMESTAMP                                          TIMESTAMP(6)
 SCRIPT                                             CLOB
 IDENTIFIER                                         VARCHAR2(256)
 MESSAGE                                            CLOB
 STATEMENT                                          CLOB

SQL> selct * from dual;
SP2-0734: unknown command beginning "selct * fr..." - rest of line ignored.
SQL>

所以,上面的 SP2 错误 现在 loggedsperrorlog table.

SQL> select timestamp, username, statement, message from sperrorlog;

TIMESTAMP                      USERNAME STATEMENT            MESSAGE
------------------------------ -------- -------------------- --------------------------------------------------
06-APR-15 10.42.49.000000 AM   LALIT    selct * from dual;   SP2-0734: unknown command beginning "selct * fr...
                                                             " - rest of line ignored.


SQL>