在db2中动态sql语句中如何给变量赋值

时间:2022-03-07 01:02:35
我有个问题不知道怎么解决:
   问题:根据输入参数(比如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;

#2


纯sql是可以的,但是动态sql无法使用此方法。

#3


同意 二楼

#1


就是EXEC SQL select count(*) into :var from ipd.cust;
如果是纯sql的环境直接可以 
select count(*) into :var from ipd.cust;

#2


纯sql是可以的,但是动态sql无法使用此方法。

#3


同意 二楼