SQLサーバーデータベースでストアドプロシージャを実行するスクリプトがあります。問題は、ストアドプロシージャがuniqueidentifierパラメーターを受け取ることです。データベース(nvarchar)からセッションIDを取得する関数があるので、VBScriptはそれを文字列にし、ストアドプロシージャに渡すために変換する必要があります。
Function GetOpenSession
Set conn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
conn.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;Data Source=" & Source
rs.CursorLocation = 3
rs.Open "SELECT top 1 OpenSession FROM OpenSessions with (nolock)" , conn, 3, 3
If rs.RecordCount = 0 Then
MsgBox "No Connection"
Else
GetOpenSession = rs.Fields(0).Value
End If
End Function
ストアドプロシージャを実行しようとすると、「キャスト指定の文字値が無効です」というメッセージが表示されます。
set cnParam = cmd.CreateParameter("@ActiveSession",72,1,,GetOpenSession)
cmd.Parameters.Append cnParam
データベース内の何も変更できないので、スクリプトでこれを克服する方法が必要です。