jas*_*eet 7 oracle bind-variables
我们可以在程序或函数中的oracle中使用绑定变量吗?
我正在尝试更新我的过程中的绑定变量.我可以这样做吗?
if (condition) then
:v_bind:=10;
end if;
Run Code Online (Sandbox Code Playgroud)
我可以在程序或函数中执行上述操作吗?
variable v_bind number;
create procedure abc as v_one
BEGIN
select count(a) into v_one from ab;
if(v_one<>0) then
:v_bind:=10;
end if;
Run Code Online (Sandbox Code Playgroud)
我能做到吗?它向我展示了糟糕的变数v_bind
Luk*_*ard 11
您无法在其中创建包含绑定变量的过程,因为存储过程是服务器端对象,绑定变量仅存在于客户端.
假设我正在使用SQL*Plus,并且我已经创建了一些绑定变量.一旦我退出SQL*Plus,我创建的任何绑定变量都不再存在.但是,存储过程必须持久存储在数据库中,因此它们不能引用任何在客户端上创建然后销毁的内容.
这是一个示例,显示您无法创建引用绑定变量的过程:
SQL> variable i number
SQL> exec :i := 0;
PL/SQL procedure successfully completed.
SQL> print :i
I
----------
0
SQL> create or replace procedure test_proc
2 as
3 begin
4 :i := 9;
5 end;
6 /
Warning: Procedure created with compilation errors.
SQL> show errors procedure test_proc;
Errors for PROCEDURE TEST_PROC:
LINE/COL ERROR
-------- -----------------------------------------------------------------
4/3 PLS-00049: bad bind variable 'I'
但是,您可以将绑定变量作为过程的OUT参数传递.然后,该过程可以为OUT参数赋值,然后该值将存储在绑定变量中.
假设我们有以下程序:
CREATE OR REPLACE PROCEDURE do_stuff (
p_output OUT INTEGER
)
AS
BEGIN
p_output := 6;
END;
Run Code Online (Sandbox Code Playgroud)
我们可以使用它来设置绑定变量,如下所示:
SQL> variable i number
SQL> exec :i := 0;
PL/SQL procedure successfully completed.
SQL> print :i
I
----------
0
SQL> exec do_stuff(:i);
PL/SQL procedure successfully completed.
SQL> print :i
I
----------
6
| 归档时间: |
|
| 查看次数: |
23269 次 |
| 最近记录: |