加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

oracle – 使用绑定变量

发布时间:2020-12-12 13:11:42 所属栏目:百科 来源:网络整理
导读:我们可以在程序或函数中的oracle中使用绑定变量吗? 我正在尝试更新我的过程中的绑定变量.我可以这样做吗? if (condition) then :v_bind:=10;end if; 我可以在程序或函数中执行上述操作吗? variable v_bind number; create procedure abc as v_one BEGIN s
我们可以在程序或函数中的oracle中使用绑定变量吗?

我正在尝试更新我的过程中的绑定变量.我可以这样做吗?

if (condition) then
    :v_bind:=10;
end if;

我可以在程序或函数中执行上述操作吗?

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;

我能做到吗?它向我展示了糟糕的变量v_bind

您无法在其中创建包含绑定变量的过程,因为存储过程是服务器端对象,绑定变量仅存在于客户端.

假设我正在使用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;

我们可以使用它来设置绑定变量,如下所示:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读