2012-06-08 54 views
0

当试图从C在SQL服务器上执行存储过程++我得到CE = {DB_E_ERRORSINCOMMAND}ADO不支持XML在存储过程

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 

这里inserstion做w^ith xml,如果没有xml的插入工作正常。我认为它与XML的问题,或者我们不能从C++访问SQL Server的XML功能?

+0

请出示您的ADO代码吗? –

回答

1

该错误不在ADO中,因为它返回了一个NULL的SQL。我怀疑dbo.sample(studentid)不允许有空值。

变化INSERT语句:

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) 
+0

问题是此存储过程不适用于ado。当我尝试从sqlserver执行完成并正确插入时执行。当我从我的应用程序执行它会引发异常。如果我删除了xml功能它正常工作。 – Prasanth