vb.netのSQLスクリプトにXMLドキュメントをパラメータとして渡すにはどうすればよいですか? XMLをSQLスクリプトの変数として使用したいと思います。 SQLスクリプトは、変数iをパラメータ・サブミッターとして認識しません。XMLドキュメントを.netのSQLスクリプトのパラメータとして渡す。
これは私のXMLです。
<?xml version="1.0"?>
<sqlSkript>
<parameter>
<name>name</name>
<datentyp>varchar</datentyp>
</parameter>
<parameter>
<name>strasse</name>
<datentyp>varchar</datentyp>
</parameter>
</sqlSkript>
これは私のSQLスクリプトです。
DECLARE @xml xml
SET @xml = @test
SELECT t.name AS table_name,
SCHEMA_NAME(t.schema_id) AS schema_name,
c.name AS column_name,
st.name as datatyp
FROM sys.tables AS t
INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
INNER JOIN sys.types st ON st.system_type_id = c.system_type_id
AND st.name != 'sysname'
WHERE (c.name like '%' + (SELECT @xml.value('(/sqlSkript/parameter/name)[1]', 'varchar(100)')) + '%'
AND st.name like (SELECT @xml.value('(/sqlSkript/parameter/datentyp)[1]', 'varchar(100)')))
or
(c.name like '%' + (SELECT @xml.value('(/sqlSkript/parameter/name)[2]', 'varchar(100)')) + '%'
AND st.name like (SELECT @xml.value('(/sqlSkript/parameter/datentyp)[2]', 'varchar(100)')))
ORDER BY schema_name, table_name;
これは私vb.netコードです
Dim command As SqlCommand = New SqlCommand()
Dim xmldoc As New Xml.XmlDocument
xmldoc.Load(System.IO.Path.GetFullPath(Application.StartupPath & "\XML\indivudellParameter.xml"))
Dim param As SqlParameter = New SqlParameter("@test", SqlDbType.Xml)
param.Value = New SqlXml(New XmlTextReader(xmldoc.InnerXml, XmlNodeType.Document, Nothing))
command.Parameters.Add(param)
Using reader As SqlDataReader = _server.ConnectionContext.ExecuteReader(script, command)
While reader.Read()
//do something
End While
reader.Close()
End Using
EDIT:
がしたいあなたは確認しています:
回避策
Dim xmldoc As New Xml.XmlDocument
xmldoc.Load(System.IO.Path.GetFullPath(Application.StartupPath & "\XML\indivudellParameter.xml"))
script = script.Replace("@test", xmldoc.InnerXml)
Using reader As SqlDataReader = _server.ConnectionContext.ExecuteReader(script)
While reader.Read()
// do something
End While
RDBMS(製品およびバージョン) – Shnugo
私は。? MS SQL Server 2008 R2を使用する – battleboimatze
この場合、SQLプロファイラを起動してSQL Serverが取得するコマンドを確認する必要があります。 – Shnugo