1、替换变量(主要用来 sql、plsql与用户的交互,可以运行时输入、也可提前输入)
注意:只替换变量,如果是字符,请放在单引号内,如‘&1’;
a 、使用环境
sql语句中:如 select * from site where site_no='&1';
pl/sql块中使用,如:
DECLARE
v_begin_time DATE := to_date('&1', 'yyyymmdd');
v_end_time DATE := to_date('&2' || ' 23:59:59', 'yyyymmdd hh24:mi:ss');
BEGIN
。。。。。。
END;
b 、两种使用:
一种是位置参数&1,&2,对应sqlplus输入时的参数位置;
一种是和一般的变量一样,任何名字都行。&a
c、声明方式:
accept v_name number promt 请输入: ----是变量,数据类型自己控制
define v_name duqiang; ----是变字符串行常量
2、绑定变量(为占位符,只要用在动态sql、游标、游标变量、sqlplus环境中变量与plsql之间的交互)
a 、动态sql(且以外面引用的变量的数据类型传到sql中去)
execute immediate ‘update site set site_name = :a where site_id= :b returning site_name into :c’
using v_a ,v_b, out v_c;
b、游标变量
open cursor for ‘select site_id from site where site_id = :a and create_date = :b’ ;
fetch cursor into v_site_id;
c、sqlplus环境中变量与plsql之间的交互
(一种特殊情况吧,块中不是动态sql的话,变量前面:即使用sqlplus环境变量)
sql> variable v_a number;
在sqlplus环境中的变量如果要在块中可见(赋值、读取),只要在变量前面加 :v_a 就好了。
sql> begin select id into :i : from site end;
d、绑定变量声明在sqlplus ,赋值在plsql ,返回给sqlplus
sql> variable a number