0

Ok。だから私はかなり新しいです。さらに操作するためにストアド プロシージャに渡したいデータテーブルがあります。私はウェブでいくつかのものを読んだことがありますが、データテーブルを XML に変換し、それをストアド プロシージャに渡すことができるはずです。私は何を間違っていますか?SQL Server 2005 を使用しています。データがストアド プロシージャに渡されることはありません。

Sub Test()
    Dim dt As New DataTable

    Fill datatable code omitted. there are 150 rows in the datatable after this

    Dim ds As New DataSet
    ds.Tables.Add(dt)
    Dim x As XmlDocument
    x.LoadXml(dt.DataSet.GetXml)
    Dim ta As New dsTestTableAdapters.TESTRxTableAdapter
    ta.ProcessFile(x)
End Sub

ストアドプロシージャは次のようになります...

ALTER PROCEDURE [dbo].[ProcessFile]

    (
         @x XML

    )
AS
BEGIN

'DO STUFF HERE

END
4

2 に答える 2

1

わかった。これは私が仕事に行くものです。これが最善の方法かどうかはわかりませんが、これは私にとってはうまくいきます。

Sub Test
    Dim ds as new DataSet ("Testds")
    Dim dt as New DataTable("Testdt")
    'Fill Datatable code omitted

Dim ta as new dsTest.TestTableAdapter
    'TableAdapter returns a datatable to ensure that the stored procedure worked
    ta.AddDataToDB(dt,ds.GetXML)

    Me.DataGridView1.DataSource=dt
    End Sub

ストアド プロシージャは次のようになります。

CREATE PROCEDURE [dbo].[AddDataToDB]

    (
         @x XML

    )
AS
    BEGIN
        DECLARE @data TABLE (
                            TestCol1 VARCHAR(50),
                            [TestCol2] VARCHAR(50), 
                            [TestCol3] VARCHAR(50), 
                            )

        INSERT INTO @data (
                           [TestCol1],
                           [TestCol2],
                           [TestCol3]
                          )
        SELECT 
            xmlVals.rowvals.query('TestCol1').value('.','VARCHAR(50)'),
            xmlVals.rowvals.query('TestCol2').value('.','VARCHAR(50)'),
            xmlVals.rowvals.query('TestCol3').value('.','VARCHAR(50)')
        FROM 
            @x.nodes('/Testds/Testdt') as xmlVals(rowvals)



        SELECT * FROM @data     

    END
于 2009-01-09T21:43:36.603 に答える
1

過去に私は似たようなことをしましたが、SQL 2000 を使用しました。SQL 2000 には XML データ型がなかったため、ntext パラメータを介して DataSet.GetXML からストアド プロシージャに出力を受け取り、sp_xml_preparedocument と sp_xml_removedocument を使用して処理する必要がありました。プロセスはあなたのために働くはずです。

XmlDocument にテキストを読み込む必要はなく、xml テキストをそのままストアド プロシージャに渡すだけでよい場合があります。

于 2009-01-08T17:22:49.680 に答える