Plsql 如何在pl/sql过程中读取值?
我在扫描pl/sql过程中的值时遇到问题。当我执行该过程时,它会忽略a:='&a' 程序体 过程调用 输出Plsql 如何在pl/sql过程中读取值?,plsql,oracle10g,oracle-sqldeveloper,procedure,Plsql,Oracle10g,Oracle Sqldeveloper,Procedure,我在扫描pl/sql过程中的值时遇到问题。当我执行该过程时,它会忽略a:='&a' 程序体 过程调用 输出 谁能帮帮我吗 在SQL*Plus中,我们有提示和接受语法,但是如果不使用PHP、Apex、Java和脚本,就无法直接实现PL/SQL的交互。我给你们举一个脚本编写的例子 e、 在Windows批处理中,以下代码将有所帮助 1) 测试程序的代码与您的代码相同 create or replace PROCEDURE Testing (arg varchar2) IS a VARCHAR2(3
谁能帮帮我吗 在SQL*Plus中,我们有提示和接受语法,但是如果不使用PHP、Apex、Java和脚本,就无法直接实现PL/SQL的交互。我给你们举一个脚本编写的例子 e、 在Windows批处理中,以下代码将有所帮助 1) 测试程序的代码与您的代码相同
create or replace PROCEDURE Testing (arg varchar2)
IS
a VARCHAR2(3);
BEGIN
a:=arg;
DBMS_OUTPUT.PUT_LINE('Value of a : '||a);
END
2) 测试蝙蝠
sqlplus nd211/nd211 @Testing.sql te1
sqlplus nd211/nd211 @Testing.sql te4
3) Testing.sql
set serveroutput on
exec Testing('&1');
exit;
测试;
/
4) 样本输出
Value of a : te1
PL/SQL procedure successfully completed.
Value of a : te4
PL/SQL procedure successfully completed.
您的
define
设置是什么(使用SQL Developer中的show
进行检查)?PL/SQL不是为用户交互而设计的,提示输入值是不寻常的,在存储过程中并不实际。您当然不能使用dbms\u output
作为提示,因为它(如您所见)在块执行结束后显示。您可以使用提示符
和接受
客户机命令,但不能从PL/SQL中使用。很难说你到底想做什么。我明白你的意思,但SHOW命令不起作用。我已经看过了。那个链接不是针对Oracle数据库的;尝试如果禁用,则可以将其设置为&
。请注意,替换变量的“&”前缀在SQL*Plus中是可配置的(set/show define
)。也许更重要的是,在您的示例中,所有这些操作都是提示输入一个将被永久编译到过程中的值(编译后检查过程源代码)。PL/SQL在数据库中运行,除了作为Forms或Apex等工具的一部分之外,它不是交互式的!这就是我想做的。谢谢你,伙计。
sqlplus nd211/nd211 @Testing.sql te1
sqlplus nd211/nd211 @Testing.sql te4
set serveroutput on
exec Testing('&1');
exit;
Value of a : te1
PL/SQL procedure successfully completed.
Value of a : te4
PL/SQL procedure successfully completed.