求简单db2动态语句?大侠们要给力吗?
现在有如下需求: 有一个存储过程 create procedure proc_test(in tbname varchar(128)) begin 如果 tbname 存在 删除表名称,创建的新的表。 如果 tbname 不存在 创建该表 end
create procedure proc_test(in tab_schema varchar(128),in tab_name varchar(128))begindeclare sql_stmt varchar(1024);if exists(select * from syscat.tables where tabschema=tab_schema and tabname=tab_name and type='T') thenset sql_stmt = 'drop table '||tab_schema||'.'||tab_name;prepare sx from sql_stmt;execute sx;commit;end if;set sql_stmt = 'create table ||tab_schema||'.'||tab_name||'(col_name int)';prepare sx from sql_stmt;execute sx;commit;end;
[解决办法]
上面写掉了一个单引号,应该下面这样:
create procedure proc_test(in tab_schema varchar(128),in tab_name varchar(128))begindeclare sql_stmt varchar(1024);if exists(select * from syscat.tables where tabschema=tab_schema and tabname=tab_name and type='T') then set sql_stmt = 'drop table '||tab_schema||'.'||tab_name; prepare sx from sql_stmt; execute sx; commit;end if;set sql_stmt = 'create table' ||tab_schema||'.'||tab_name||'(col_name int)';prepare sx from sql_stmt;execute sx;commit;end;commit;