使用提示 SQL 重置变量值

问题描述 投票:0回答:1

我是使用 SQL Developer 的新手,我尝试过谷歌搜索,但似乎没有任何效果。 我试图在语句中使用一个变量两次,并且只提示该变量一次。 但是,当我尝试使用 && 时,即使我添加了 undefine。该代码将运行两次,让我请求该变量,但在第二次之后,它会继续重用最后一个给定的变量 这是让我接近的代码:

UNDEFINE PayeeNumber
select *
from policytran
where comm1payee = &&PayeeNumber or comm2payee = &&PayeeNumber
sql variables oracle-sqldeveloper
1个回答
0
投票

一般来说,

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>
© www.soinside.com 2019 - 2024. All rights reserved.