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

LaoZheng 2004-03-25 10:08:29
我有个问题不知道怎么解决:
问题:根据输入参数(比如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、有没有其他好的解决方法
...全文
1569 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
klbt 2004-09-03
  • 打赏
  • 举报
回复
同意 二楼
LaoZheng 2004-04-07
  • 打赏
  • 举报
回复
纯sql是可以的,但是动态sql无法使用此方法。
Forest_Law 2004-03-31
  • 打赏
  • 举报
回复
就是EXEC SQL select count(*) into :var from ipd.cust;
如果是纯sql的环境直接可以
select count(*) into :var from ipd.cust;

5,889

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧