【发布时间】:2008-11-30 16:42:29
【问题描述】:
我正在尝试从 MS SQL 2005 中的链接数据库执行存储过程。链接数据库是 iseries 服务器上的 db2 数据库。我正在使用 iSeries IBMDASQL 服务提供者。我可以使用简单的 vbscript 和 ado 毫无问题地查询存储过程。当我尝试在 SQL Server 上的查询分析器中执行相同的存储过程时,我从未看到任何结果。查询分析器总是显示“命令已执行”,当我在临时表上执行 select * 时,没有值出现。我究竟做错了什么????? 谢谢!
--来自下面查询分析器的代码--
DECLARE @emailToAddress char(50)
DECLARE @emailFromAddress char(50)
set @emailToAddress = 'customer.service@company.com'
set @emailFromAddress = 'customer@gmail.com'
If Object_ID('tempdb..#tmpResultTbl') Is Not Null
Drop Table #tmpResultTbl
Create Table #tmpResultTbl
(
OUTPGMID Char(150))
--SET FMTONLY Off
Set NoCount On
Insert Into #tmpResultTbl
EXEC ('CALL abicqual.VP_GETCCEPGMID(?, ?) ', @emailToAddress, @emailFromAddress) AT MAM400
Select * From #tmpResultTbl
更新: 这是使用openquery的更新代码......仍然没有运气:(
声明@TSQL varchar(8000) 声明@emailToAddress varchar(50) 声明@emailFromAddress varchar(50) SET @emailToAddress = 'customer.service@company.com' SET @emailFromAddress = 'customer@gmail.com' SET @TSQL = 'SELECT * FROM OPENQUERY(MAM400,''CALL abicqual.VP_GETCCEPGMID(''''' + @emailToAddress + ''''', ''''' + @emailFromAddress + '''''' + ')''' + ')' 打印@TSQL 执行 (@TSQL)
--在下面输出-- SELECT * FROM OPENQUERY(MAM400,'CALL abicqual.VP_GETCCEPGMID(''customer.service@company.com'', ''customer@gmail.com'')') 消息 7357,第 16 层,状态 2,第 1 行 无法处理对象“CALL abicqual.VP_GETCCEPGMID('customer.service@company.com', 'customer@gmail.com')”。链接服务器“MAM400”的 OLE DB 提供程序“IBMDASQL”表明该对象没有列或当前用户对该对象没有权限。
【问题讨论】:
标签: sql-server-2005 db2 linked-server ibm-midrange