简体   繁体   English

将字符串参数发送到存储过程

[英]Send string Parameter to Stored Procedure

I am Working on asp.net C# Project that connect to SQL Database (MySQL 2008).Here is my C# Class: 我正在研究连接到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;
    }

And Here is the Stored Procedure : 这是存储过程:

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

I call the Procedure Like this: DataTable unit1 = Unit.GetUnitByName(per100gText[1] enter code here ); 我这样调用过程:DataTable unit1 = Unit.GetUnitByName(per100gText [1] enter code here ); , wich per10gText is a string list. ,其中per10gText是字符串列表。 but it return empty datatable. 但它返回空的数据表。 the connection to sql server, in debuging i see that the procedure can't read the parameter. 与sql server的连接,在调试中我看到程序无法读取参数。 Any Help Please. 任何帮助请。

if you want proc to return param you need first to declare it as output param 如果要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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM