注册

sqlserver迁移到DM,存储过程中临时表的使用

小灰灰_oO 2024/01/16 865 17

在做sqlserver数据的迁移工作。表,视图,迁移都没问题了。
但是存储过程的迁移,碰到了问题。sqlserver存储过程中,大量使用了如下的临时表

CREATEA table #t1 ( id bigint, name varchar(20) )

注意:不同的过程里面可能存在同名的临时表,但是同名临时表的字段结构在不同的过程里面其实是不同的

迁移过来的存储过程,都要进行改造。可是我在DM这边的存储过程里面,不能直接定义临时表。存储过程定义临时表,DM直接报语法有问题:不支持的语句类型

CREATEA TEMPORARY table T1 ( id bigint, name varchar(20) )

这我要咋搞,我上网看了别人的介绍,要通过 execute IMMEDIATE 动态语句才能创建。关键我这样写以后,也给我报错啊:

create or REPLACE PROCEDURE test_p as begin execute IMMEDIATE 'create TEMPORARY TABLE T1(id bigint,name varchar(20)) ON COMMIT PRESERVE ROWS'; SELECT * FROM T1; -- 无效的表或视图名[T1] end;

查询也改成动态语句就不报错:

create or REPLACE PROCEDURE test_p as begin execute IMMEDIATE 'create TEMPORARY TABLE T1(id bigint,name varchar(20)) ON COMMIT PRESERVE ROWS'; EXECUTE IMMEDIATE 'SELECT * FROM T1'; end;

一个存储过程里面很多地方引用了这个临时表啊,我难道要每条语句都改成动态语句?有没有方便的方法啊,各位大佬?

回答 0
暂无回答
扫一扫
联系客服