有没有办法只运行一次查询以选择变量,考虑到查询可能什么都不返回,那么在这种情况下变量应该为null.
目前,我无法select into直接执行变量,因为如果查询什么都不返回,PL/SQL会抱怨变量没有设置.我只能运行查询两次,第一个执行计数,如果计数为零,则将变量设置为null,如果计数为1,则选择变量.
所以代码就像:
v_column my_table.column%TYPE;
v_counter number;
select count(column) into v_counter from my_table where ...;
if (v_counter = 0) then
v_column := null;
elsif (v_counter = 1) then
select column into v_column from my_table where ...;
end if;
Run Code Online (Sandbox Code Playgroud)
谢谢.
更新:我没有使用异常的原因是我在分配之后仍然有一些跟随逻辑v_column,我必须goto在异常部分中使用跳转回以下代码.我有点犹豫不决goto.
当我尝试在TOAD中插入一个带有'&'的值时,我得到一个替换变量的提示.
所以,当我尝试:
insert into x values('hello & world');
Run Code Online (Sandbox Code Playgroud)
它会提示替换变量'world'.
我尝试右键单击编辑器并禁用替换变量的提示,但这似乎仅适用于Execute Statement(F9)它不适用于Execute as script(F5).
我也知道使用chr(38)像:
insert into x values('hello '||chr(38)||'world');
Run Code Online (Sandbox Code Playgroud)
但我不想要这个.还有其他东西可以帮助我运行脚本吗?