执行带OUTPUT参数(String)的存储过程得不到返回值解决方法
执行带OUTPUT参数(String)的存储过程得不到返回值
请问下各位大侠这个问题如何解决?
存储过程:
执行结果:
VS2005代码:
------解决方案--------------------
看不出什么问题
我一般这么写,不好意思是C#代码
请问下各位大侠这个问题如何解决?
存储过程:
- SQL code
USE [Master] GO /****** Object: StoredProcedure [dbo].[Proc_Get_String] Script Date: 03/19/2012 11:13:58 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER proc [dbo].[Proc_Get_String] @Type nvarchar(10), @FileName nvarchar(20) output as begin set @FileName=@Type+'_120319001.txt' end
执行结果:
- SQL code
declare @rtn nvarchar(20) exec proc_get_string 'FA',@rtn output select @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