0

当尝试从 c++ 执行 sql server 中的存储过程时,我得到 ce = {DB_E_ERRORSINCOMMAND}

c++代码是

pCom->Execute(NULL,NULL,adCmdStoredProc);

从命令对象执行..

存储过程看起来像这样

create PROCEDURE [dbo].[InsertTicketDetails]
AS
BEGIN
DECLARE @inputXml XML;
SET NOCOUNT ON
set @inputXml = '<Record><studentid>143</studentid></Record>';

INSERT INTO dbo.sample (studentid)
    SELECT 
        @inputXml.value( 'studentid[1]', 'int' ) AS studentid        
    FROM @inputXml.nodes('/Record') a(y)
END

如果在没有 xml 正常工作的情况下完成插入,则此处的插入是使用 xml 完成的。我认为这是 xml 的问题,或者我们无法从 c++ 访问 sql server 的 xml 功能?

4

1 回答 1

1

错误不在 ADO 中,而是在返回 NULL 的 SQL 中。我怀疑 dbo.sample (studentid) 不允许空值。

将插入语句更改为:

INSERT INTO dbo.sample (studentid)
SELECT  
    @inputXml.value( '(/Record/studentid)[1]', 'int' ) AS studentid         

或者

INSERT INTO dbo.sample (studentid)
SELECT  
    @inputXml.value( '(//studentid)[1]', 'int' ) AS studentid         
FROM @inputXml.nodes('/Record') a(y) 
于 2012-06-08T05:16:44.670 回答