我有一个关于在Oracle中调用过程的问题。 这就是我所拥有的,这在SQLPlus中运行良好。
VARIABLE resultSet REFCURSOR;
BEGIN
CALL_TEST('10DD', :resultSet);
END;
/
但是,下面的代码不起作用,因为它给了我变量的解释,而不是说“PL / SQL过程成功完成。”
VARIABLE resultSet REFCURSOR; BEGIN HUGHES_ARIAL.DUNNING_TEST('1D10', :resultSet); END; /
问题是我需要在每次之后按Enter键; (分号)。有没有办法让我上面的声明只用1行而不必按Enter键?
我正在使用电子邮件广告系列企业软件,但它不允许我在SQLPlus中做我能做的事情。
答案 0 :(得分:1)
所有SQL*Plus
命令都应在一行内。在使用不同的命令时,它必须是多行的。
示例:强>
SQL> variable test NUMBER;set linesize 0;
Usage: VAR[IABLE] [ <variable> [ NUMBER | CHAR | CHAR (n [CHAR|BYTE]) |
VARCHAR2 (n [CHAR|BYTE]) | NCHAR | NCHAR (n) |
NVARCHAR2 (n) | CLOB | NCLOB | REFCURSOR |
BINARY_FLOAT | BINARY_DOUBLE ] ]
可以使用EXEC
以这种方式调用您的程序。
VARIABLE resultSet REFCURSOR;
EXEC CALL_TEST('10DD', :resultSet);
OR
VARIABLE resultSet REFCURSOR;
BEGIN CALL_TEST('10DD', :resultSet); END;
/
整个PL/SQL
块可能在一行中,在尝试执行时,您必须明确指定'/'
作为新行!
如果您担心多行,
将其放入文件并以脚本形式运行。
SQL> !cat my_script.sql
VARIABLE resultSet REFCURSOR;
BEGIN
CALL_TEST('10DD', :resultSet);
END;
/
SQL> start my_script.sql