暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 用变量替换参数

ASKTOM 2020-07-16
734

问题描述

我想用相同参数之前的符号替换过程中使用的参数或参数。
喜欢
过程proc_name (para_1编号,
para_2 varchar2,......)

选择 .....来自表1,其中col_name = para_1;
结束;

输出为
过程proc_name (:para_1编号,
: para_2 varchar2,……)
选择 .....来自表1,其中col_name = :para_1;
结束;

过程包含更复杂的代码和更多的参数,因此很难用bind变量替换每个参数。
因为有一些时间在Toad环境中执行代码内部所以。

专家解答

所以你想把PL/SQL中SQL的所有变量都绑定变量?

没必要!

他们are绑定变量。编译PL/SQL程序时,数据库将其中的SQL规范化。这个:

-删除不必要的空格
-大写文本
-使变量绑定变量

例如:

create table t as 
  select mod ( level, 10 ) c1 
  from   dual
  connect by level <= 100;
  
create or replace procedure p ( v1 int ) as
  c pls_integer;
begin
  select count (*)
  into   c
  from   t
  where  c1 = v1;
  
  dbms_output.put_line ( 'count = ' || c );
end p;
/

exec p ( 2 );

count = 10

select sql_text from v$sql
where  upper ( sql_text ) like 'SELECT COUNT (*)%FROM T%';

SQL_TEXT                                  
SELECT COUNT (*) FROM T WHERE C1 = :B1  


请注意,数据库已转换:

where  c1 = v1  => WHERE C1 = :B1

文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论