我有一个返回字符串的存储过程,我需要将结果作为 powershell 变量。我坚持输出参数语法。
Powershell脚本:
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server=myserver;Database=mydb;Integrated Security=True"
$SqlConnection.Open()
$SqlConnection.State
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = "testsp3"
$SqlCmd.Connection = $SqlConnection
$op = new-object System.Data.SqlClient.SqlParameter;
$op.ParameterName = "@answer";
$op.Direction = [System.Data.ParameterDirection]'Output';
$op.DbType = [System.Data.DbType]'String';
$op.Size = 2500
$SqlCmd.Parameters.Add($op);
$what = $SqlCmd.ExecuteScalar();
$what
错误信息:
使用“0”参数调用“ExecuteScalar”的异常:“过程或函数'testsp3'需要参数'@answer',但未提供。”
存储过程(如果重要):
CREATE PROCEDURE [dbo].[testsp3]
@answer nvarchar(max) output
AS
BEGIN
SET NOCOUNT ON;
SELECT @answer = 'blah blah blah'
RETURN
END
GO