在PL / SQL程序中获取错误,警告“缺少或无效选项”

时间:2016-05-27 00:55:32

标签: oracle plsql

create or replace PROCEDURE PROC_OPE AS 
  FILE_PATH         VARCHAR2(150) := 'd:\OPENTOW_'||trunc(sysdate)||'.csv';                       
  QUERY_STRING      VARCHAR2(100) := 'SPOOL'||FILE_PATH;
  STATUS            VARCHAR2(50)  := 'Withdrawn';
  DATEFORMAT        VARCHAR2(50)  := 'dd/mm/yyyy hh24:mi:ss';
  TIMEFORMAT        VARCHAR2(50)  := 'hh24:mi:ss';
  YES_FLAG          VARCHAR(3)    := 'Yes';
  NO_FLAG           VARCHAR(3)    := 'No';
  BLANK_SPACE       VARCHAR2(1)   := ' ';
BEGIN
  execute immediate 'SET ECHO OFF';
  execute immediate 'SET FEEDBACK OFF';
  execute immediate QUERY_STRING;

我收到此错误

  

错误讯息:`                 ORA-00922:缺少或无效选项                 ORA-06512:在“WS”,第12行                 ORA-06512:第2行                  流程退出。

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

SPOOL,SET ECHO OFF,SET FEEDBACK OFF - 它们都是 SQL-Plus 命令,而不是 SQL 命令。

如果您尝试使用EXECUTE IMMEDIATE运行其中任何一个,您将收到此错误,例如:

BEGIN
 execute immediate 'SET ECHO OFF';
END;
/
Error starting at line : 1 in command -
BEGIN
 execute immediate 'SET ECHO OFF';
END;
Error report -
ORA-00922: brakująca lub niepoprawna opcja
ORA-06512: przy linia 2
00922. 00000 -  "missing or invalid option"

Sql-Plus是一个客户端实用程序 SQL是一种结构化查询语言

EXECUTE IMMEDIATE接受 ony SQL命令,你不能在EXECUTE IMMEDIATE中运行SQL-Plus,它们在SQL-PLus中可用,或者(其中一些)是SQL-Developer,但在其他客户端不能JDBC,ODBC。