从IBM DB2 Stored过程插入临时表,而不是在SQL中插入记录

时间:2017-12-15 10:35:19

标签: sql stored-procedures db2 temp-tables

我是IBM DB2的新手,我正在尝试使用IBM DB2 Stored过程的结果集插入SQL中的临时表。 从SQL Server单独调用时,存储过程将返回正确的数据。

但是当我创建一个临时表并尝试将记录从IBM DB2 SP插入临时表时,它表示'(0行(s)受影响)'

我在SQL服务器中单独调用DB2 SP。

EXEC ('{CALL SCHEMA.SP_NAME (''PARAM1'', ''PARAM2'', ''PARAM3'')}') AT SERVERNAME;

这样可以得到正确的输出。

现在我创建一个临时表,其列名与SP结果集的定义相同 并尝试像这样插入临时表

CREATE TABLE #reorder (
         PRODCODE VARCHAR(35),
         BUYNUM VARCHAR(10), 
         DISCO CHAR(1),
         QTY_AVAIL INT ,
         RECENT_NBR_DAY INT,
         RECENT_ORD_QTY INT,
         PER_DAY_DEMAND_QTY DECIMAL(7,2),
         AVAIL_NBR_DAY DECIMAL(7,2),
         YEAR_ORD_QTY INT,
         YEAR_PER_DAY_DEMAND DECIMAL(7,2),
         PONUM VARCHAR(10),
         POQTY INT,
         ISSUEDAT DATETIME,
         PRODDESC VARCHAR(25),
         CUCODE VARCHAR(15),
         LEADTIME INT,
         DEMANDPERDAY DECIMAL(7,2),
         ANNUALUSAGE INT,
         MAXIMUMDAILYUSAGE INT,
         SAFETYSTOCK DECIMAL(7,2),
         REPORDERPOINT DECIMAL(7,2),
         PRCVNR INT,
        )

INSERT INTO #reorder EXEC ('{CALL SCHEMA.SP_NAME (''PARAM1'', ''PARAM2'', ''PARAM3'')}') AT SERVERNAME;

即使SP返回记录,它也不会插入到临时表中。它给出(0行受影响)消息。

我尝试在临时表中增加列数据类型的长度,然后它突然开始工作,但它再次停止工作。

我无法弄清楚究竟是什么问题!!查询中是否有任何需要更改的内容?

我尝试了不同的方法来执行查询,就像使用OPENROWSET一样,但它提供的错误是“OLE DB提供程序" IBMDASQL"对于链接服务器"(null)"表示该对象没有列,或者当前用户没有该对象的权限。'即使SP返回记录,我仍然会收到此错误。

有人可以帮我找到解决方法吗?

提前致谢

0 个答案:

没有答案