将字符串参数发送到存储过程
Posted
技术标签:
【中文标题】将字符串参数发送到存储过程【英文标题】:Send string Parameter to Stored Procedure 【发布时间】:2014-12-05 08:13:33 【问题描述】:我正在处理连接到 SQL 数据库 (mysql 2008) 的 asp.net C# 项目。这是我的 C# 类:
public static DataTable GetUnitByName(string unit)
Database db = DatabaseFactory.CreateDatabase();
string sqlCommand = "GetUnitByName";
DbCommand dbCommandWrapper = db.GetStoredProcCommand(sqlCommand);
db.AddInParameter(dbCommandWrapper, "@Unit", DbType.String, unit);
DataSet ds = db.ExecuteDataSet(dbCommandWrapper);
DataTable dt = ds.Tables[0];
return dt;
这是存储过程:
alter PROCEDURE [dbo].[GetUnitByName]
(
@Unit nvarchar
)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON
DECLARE @Err int
-- Insert statements for procedure here
select * from Unit where Name=@Unit
SET @Err = @@Error
RETURN @Err
END
我这样调用程序:
DataTable unit1 = Unit.GetUnitByName(per100gText[1]enter code here
); , per10gText 是一个字符串列表。
但它返回空数据表。与 sql server 的连接,在调试中我看到该过程无法读取参数。
请提供任何帮助。
【问题讨论】:
【参考方案1】:如果你想让 proc 返回参数,你需要先将它声明为输出参数
alter PROCEDURE [dbo].[GetUnitByName]
(
@Unit nvarchar , @err int output
)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON
-- Insert statements for procedure here
select * from Unit where Name=@Unit
SET @Err = @@Error
RETURN @Err
END
【讨论】:
我不经常使用sql代码,你能解释一下函数吗?并直接使用sql和C#返回值? 我不知道 c# -:( 阅读有关 proc 和 func 的信息:***.com/questions/1179758/…以上是关于将字符串参数发送到存储过程的主要内容,如果未能解决你的问题,请参考以下文章
如何在 c# 实体框架核心中使用 FromSqlRaw() 将 OUTPUT 参数发送到 MySql 存储过程
SQL Server 2005 使用 GETDATE() 作为参数通过 SSIS 运行存储过程