0

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 機能にアクセスできませんか?

4

1 に答える 1

1

エラーは ADO ではなく、NULL を返す SQL にあります。dbo.sample (studentid) は null を許可していないと思われます。

挿入ステートメントを次のように変更します。

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 に答える