2016-04-16 93 views
0

私は、入力パラメータを受け入れ、出力パラメータを設定する単純なSQL Serverストアドプロシージャを持っています。私はPowerShellで@output変数の値を取得したいストアドプロシージャの値を取得する方法OUTPUT変数

CREATE PROC SomeDB.dbo.SomeProc 
    @input varchar(255), 
    @output int OUTPUT 
AS 
    IF @input = 'a' 
    BEGIN 
     SET @output = 0; 
    END 
    ELSE 
    BEGIN 
     SET @output = 1; 
    END 
    ; 
GO 

:次のようにストアドプロシージャの本質です。私はSSMSでこれを行うとしたら、私のようなものだろう:

DECLARE @out int; 
EXEC SomeDB.dbo.SomeProc 'a', @out OUTPUT; 
PRINT @out; 

をしかし、私はそれがPowerShellでそれは簡単だとは思いません。ここで

私のスクリプトは、PowerShellでこれまでのところです(私が知っている不完全である):

$ErrorActionPreference = "Stop" 

$server = "some_IP_address" 
$db = "SomeDB" 
$input = "'a'" 
$query = "EXEC dbo.SomeProc $input;" 

try { 
    Invoke-Sqlcmd -ServerInstance $server -Database $db -Query $query -QueryTimeout 60000 
} catch { 
    Write-Host "stored proc error" 
} 

は、どのように私はPowerShellで@output変数の値を得るのですか?

答えて

0

このような何かがうまくいくかもしれない:

$cn = New-Object Data.SqlClient.SqlConnection 
$cn.ConnectionString = '...' 
$cmd = New-Object Data.SqlClient.SqlCommand 
$cmd.CommandText = 'dbo.SomeProc' 
$cmd.Connection = $cn 
$cmd.CommandType = [Data.CommandType]::StoredProcedure 

$p = $cmd.Parameters.Add('@output', '') 
$p.Direction = [Data.ParameterDirection]::Output 
$p.Size = 42 

$cn.Open() 
$cmd.ExecuteNonQuery() 

$p.SqlValue.Value 

[source]

関連する問題