DB2子程序:DB2 单引号
DB2 子程序中的 单引号
select concat(concat('''','hello'),'''') from sysibm.dual; 得到 'hello'
--建表
create table ind_test.t_inst_zzh(
statis_date varchar(20),
brand_code varchar(32),
cnt decimal(6,0)
) in userspace1
distribute by hash (statis_date);
truncate table ind_test.t_inst_zzh immediate;
select * from ind_test.t_inst_zzh;
insert into ind_test.t_inst_zzh(statis_date,brand_code,cnt) values('20160314 14:05:31','B01',1000);
--建过程
drop procedure ind_test.prc_test(
out ov_msg varchar(500)
)
begin
declare vv_statis_date varchar(20);
--declare vv_brand_code varchar(32);
declare vd_cnt decimal(6,0);
declare vv_sql varchar(200);
declare sqlcode integer;
declare vv_err_msg varchar(500);
declare exit handler for sqlexception begin
rollback;
get diagnostics exception 1 vv_err_msg = message_text;
set ov_msg = substr(sqlcode||','||vv_err_msg,1,200);
set vv_statis_date = to_char(current timestamp,'yyyymmdd hh24:mi:ss');
set vd_cnt = 1200;
end;
--1. 动态sql:varchar变量(表示值 含单引号), varchar常量(表示值 含单引号)
set vv_sql = ' insert into ind_test.t_inst_zzh(statis_date,brand_code,cnt) values('||concat(concat('''',vv_statis_date),'''')||',' ||concat(concat('''',upper('b01')),'''')|| ',vd_cnt) ';
execute immediate vv_sql;
--2. 静态sql:varchar变量(表示值 含单引号), varchar常量(表示值 含单引号)
insert into ind_test.t_inst_zzh(statis_date,brand_code,cnt) values(vv_statis_date,upper('B02'),2200);
commit;
set ov_msg = 'success';
end;
--调用
call ind_test.prc_test(?);
说明:当 schema 和 table 是变量时,只能用 动态sql。
浙公网安备 33010602011771号