我是使用 SQL Developer 的新手,我尝试过谷歌搜索,但似乎没有任何效果。 我试图在语句中使用一个变量两次,并且只提示该变量一次。 但是,当我尝试使用 && 时,即使我添加了 undefine。该代码将运行两次,让我请求该变量,但在第二次之后,它会继续重用最后一个给定的变量 这是让我接近的代码:
UNDEFINE PayeeNumber
select *
from policytran
where comm1payee = &&PayeeNumber or comm2payee = &&PayeeNumber
一般来说,
undefine
应该有效。这是一个 SQL*Plus 演示。
样本表:
SQL> select * From policytran;
COMM1PAYEE COMM2PAYEE NAME
---------- ---------- -----
1 100 Mike
2 100 Scott
3 300 Jason
使用替换变量的查询(与你的相同):
SQL> select *
2 from policytran
3 where comm1payee = &&payeenumber or comm2payee = &&payeenumber;
Enter value for payeenumber: 1
COMM1PAYEE COMM2PAYEE NAME
---------- ---------- -----
1 100 Mike
由于
&&
的用法,重新运行相同的语句会返回相同的数据:
SQL> /
COMM1PAYEE COMM2PAYEE NAME
---------- ---------- -----
1 100 Mike
取消定义它;查询按预期工作(它要求值):
SQL> undefine payeenumber
SQL> /
Enter value for payeenumber: 100
COMM1PAYEE COMM2PAYEE NAME
---------- ---------- -----
1 100 Mike
2 100 Scott
SQL>
另一方面,可以重写该查询,这样您就不会两次使用该变量。
先取消定义:
SQL> undefine payeenumber
一个新查询:
SQL> select *
2 from policytran
3 where &payeenumber in (comm1payee, comm2payee);
Enter value for payeenumber: 100
COMM1PAYEE COMM2PAYEE NAME
---------- ---------- -----
1 100 Mike
2 100 Scott
重新运行它会询问值:
SQL> /
Enter value for payeenumber: 3
COMM1PAYEE COMM2PAYEE NAME
---------- ---------- -----
3 300 Jason
SQL>