ADO 不支持存储过程中的 XML

ADO Not Supporting XML in stored procedure

本文关键字:XML 过程中 存储过程 不支持 存储 ADO      更新时间:2023-10-16

当尝试从 c++ 在 sql 服务器中执行存储过程时,我得到 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功能?

错误不在 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)