Plsql 如何在pl/sql过程中读取值?

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

我在扫描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);
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.