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行 流程退出。
有人可以帮助我吗?
答案 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。