执行带OUTPUT参数(String)的存储过程得不到返回值
请问下各位大侠这个问题如何解决?
存储过程:
- SQL code
USE [Master]GO/****** Object: StoredProcedure [dbo].[Proc_Get_String] Script Date: 03/19/2012 11:13:58 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER proc [dbo].[Proc_Get_String]@Type nvarchar(10),@FileName nvarchar(20) outputas begin set @FileName=@Type+'_120319001.txt'end
执行结果:
- SQL code
declare @rtn nvarchar(20)exec proc_get_string 'FA',@rtn outputselect @rtn返回值:FA_120319001.txt
VS2005代码:
- VB.NET code
Dim cmd As New SqlCommand Dim Conn As New SqlConnection Dim vFilename As String Try Conn.ConnectionString = ConnectionString Conn.Open() With cmd .CommandText = "Proc_Get_String" .CommandType = CommandType.StoredProcedure .CommandTimeout = 100 .Connection = Conn .Parameters.AddWithValue("@TYPE", "FA") .Parameters.AddWithValue("@FILENAME", "") .Parameters("@FILENAME").Direction = ParameterDirection.Output End With cmd.ExecuteNonQuery() vFilename = cmd.Parameters("@FILENAME").Value.ToString返回值:vFilename=""[解决办法]
看不出什么问题
我一般这么写,不好意思是C#代码
- C# code
string result=0; SqlConnection cn = new SqlConnection("接字符串"); SqlCommand cmd = new SqlCommand("Proc_Get_String",cn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("@@FILENAME", SqlDbType.Nvarchar).Direction= ParameterDirection.Output; try { cn.Open(); cmd.ExecuteNonQuery(); result = cmd.Parameters["@@FILENAME"].Value.ToString(); } finally { cn.Close(); cn.Dispose(); cmd.Dispose(); }
[解决办法]
指定参数的数据长度试一试
[解决办法]
.Parameters.AddWithValue("@FILENAME", "")
这半句去掉试试
[解决办法]
- VB.NET code
With cmd .CommandText = "TestOutput" .CommandType = CommandType.StoredProcedure .CommandTimeout = 100 .Connection = Conn .Parameters.AddWithValue("@Type", "FA") .Parameters.AddWithValue("@FileName", "") '--经过测试,要给参数定义他的size就可以了。 .Parameters("@Type").Size = 10 .Parameters("@FileName").Size = 20 '-- .Parameters("@FileName").Direction = ParameterDirection.Output End With
[解决办法]
- VB.NET code
With cmd .CommandText = "TestOutput" .CommandType = CommandType.StoredProcedure .CommandTimeout = 100 .Connection = Conn .Parameters.AddWithValue("@Type", "FA") .Parameters.AddWithValue("@FileName", "") '--经过测试,要给参数定义他的size就可以了。 .Parameters("@Type").Size = 10 .Parameters("@FileName").Size = 20 '-- .Parameters("@FileName").Direction = ParameterDirection.Output End With