问题:根据输入参数(比如200402)判断系统中是否有表test_200402,如果没有就创建,否则有请清空 。为此我做了如下的处理
解决办法:使用动态语句
create procedure get_data_to_model_table(churn_month integer)
Begin
decalre str_month char(6);
set str_month=char(churn_month);
....
set sql_str ='select COUNT(*) from from sysibm.systables where name='||''''||test_'||str_month||''''||' and type='||''''||'T'||''''||' and creator='||''''||'mymodel'||'''';
execute immediate sql_str INTO rec_count_total;
commit;
if re_count_total=0 then
create table...
else
ALTER TABLE mymodel.test_200312 ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE 删除行的内容
end if;
....
end;
疑难: 1、如何把COUNT(*) 的值放如到变量rec_count_total中(我知道在oracle中是这样处理的:execute immediate sql_str INTO rec_count_total),或者
2、有没有其他好的解决方法
3 个解决方案
#1
就是EXEC SQL select count(*) into :var from ipd.cust;
如果是纯sql的环境直接可以
select count(*) into :var from ipd.cust;
如果是纯sql的环境直接可以
select count(*) into :var from ipd.cust;
#2
纯sql是可以的,但是动态sql无法使用此方法。
#3
同意 二楼
#1
就是EXEC SQL select count(*) into :var from ipd.cust;
如果是纯sql的环境直接可以
select count(*) into :var from ipd.cust;
如果是纯sql的环境直接可以
select count(*) into :var from ipd.cust;
#2
纯sql是可以的,但是动态sql无法使用此方法。
#3
同意 二楼