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

C# 将字符串参数发送到存储过程,c#,sql,stored-procedures,C#,Sql,Stored Procedures,我正在从事连接SQL数据库MySQL 2008的asp.net C项目。以下是我的C类: public static DataTable GetUnitByName(string unit) { Database db = DatabaseFactory.CreateDatabase(); string sqlCommand = "GetUnitByName"; DbCommand dbCommandWrapper = db.GetSto

我正在从事连接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.GetUnitByNameper100gText[1]在此处输入代码,wich per10gText是一个字符串列表。 但它返回空数据表。与sql server的连接,在调试过程中,我看到该过程无法读取参数。
请提供任何帮助。

如果希望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的内容: