【发布时间】:2015-10-25 12:58:59
【问题描述】:
我在扫描 pl/sql 过程中的值时遇到问题。当我执行该过程时,它会忽略 a:='&a'; .
程序主体
create or replace PROCEDURE Testing
IS
a VARCHAR2(3);
BEGIN
DBMS_OUTPUT.PUT_LINE('Enter a : ');
a:='&a';
END Testing;
过程调用
SET SERVEROUTPUT ON;
cl scr;
Execute Testing;
输出
PL/SQL procedure successfully completed.
Enter a :
有人可以帮帮我吗!?
【问题讨论】:
-
您的
define设置是什么(在SQL Developer 中使用show检查)? PL/SQL 不是为用户交互而设计的,提示输入值是不寻常的,并且在存储过程中并不实用。您当然不能使用dbms_output作为提示,因为它(如您所见)在块执行结束后显示。您可以使用prompt和accept客户端命令,但不能在PL/SQL 中使用。很难说你真的想做什么。 -
我明白你的意思,但 SHOW 命令不起作用。我已经通过this。
-
该链接不适用于 Oracle 数据库;试试this one。以及
set definecommand 将其设置为&,如果它处于关闭状态。 -
请注意,替换变量的“&”前缀在 SQL*Plus (
set/show define) 中是可配置的。也许更重要的是,在您的示例中,所有这些都在提示输入一个将永久编译到过程中的值(编译后检查过程源)。 PL/SQL 在数据库中运行,除了作为 Forms 或 Apex 等工具的一部分之外,它不是交互式的。
标签: plsql oracle10g oracle-sqldeveloper procedure