为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM8
【操作系统】:
【CPU】:
【问题描述】*:
该存储过程,先drop这个表,然后再创建这个表
AS
/变量说明部分/
V_SQL VARCHAR2(32767);
V_SQL2 VARCHAR2(32767);
BEGIN
/执行体/
V_SQL := 'drop table IF EXISTS DB.KRI_IMG;';
V_SQL2 := 'CREATE TABLE "DB"."KRI_IMG";
EXECUTE IMMEDIATE V_SQL;
EXECUTE IMMEDIATE V_SQL2;
END;
之前一直都可以正常drop,创建表的,今天发现,只完成了drop表,没有create,所以想这里加事务;
代码没有问题的,这里只是贴出了部分代码,就是不知道怎么将V_SQL,V_SQL2放在一个事务中,
DDL是自动提交的,所以上面一个drop成功了,下面的create如果某种原因失败了,是有可能的,建议在语句块中加异常捕获,看看是什么原因导致create失败了。
create or replace procedure DCT
AS
V_SQL VARCHAR2(32767);
V_SQL2 VARCHAR2(32767);
BEGIN
V_SQL := 'drop table IF EXISTS "SYSDBA"."test";';
V_SQL2 := 'CREATE TABLE "SYSDBA"."test"(id int,name varchar(50));';
EXECUTE IMMEDIATE V_SQL;
EXECUTE IMMEDIATE V_SQL2;
END;
---执行存储过程
call DCT();
我这边测试是可以成功创建和删除表的
V_SQL2这里语句不完整,CREATE TABLE 后面没有列定义