2012-06-08 55 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