"过程或函数需要参数,该参数未提供。"

时间:2014-10-24 21:55:06

标签: c# sql-server stored-procedures

我有一个错误,它是:

“过程或函数'Consulta_RFC_Empresa'需要参数'@RFC',这是未提供的。”

这是我在C#上使用的代码:

    public static Proveedor getDatosEmpresa(string erfc)
    {

        SqlDataReader rdr = null;
        Proveedor empr = new Proveedor();
        try
        {

            conn.Open();

            SqlCommand command = new SqlCommand("Consulta_RFC_Empresa", conn);
            command.CommandType = CommandType.StoredProcedure;
            command.Parameters.AddWithValue("@RFC", @erfc);

            rdr = command.ExecuteReader();

            while (rdr.Read())
            {
                if (rdr.HasRows)
                {
                    empr.seteID("" + rdr["ID"]);
                    empr.seteRfc("" + rdr["RFC"]);
                    empr.seteTipo("" + rdr["Tipo"]);
                    empr.seteRazon("" + rdr["Razon_Social"]);
                }
            }
        }

        finally
        {
            if (conn != null)
            {
                conn.Close();
            }
            if (rdr != null)
            {
                rdr.Close();
            }
        }

        return empr;
    }

和存储过程代码是:

ALTER PROCEDURE [dbo].[Consulta_RFC_Empresa]
(
    @RFC    VARCHAR(50)
)
AS
SET NOCOUNT ON

SELECT  TOP(1)
    RTRIM(LTRIM(ID))    AS  ID,
    RTRIM(LTRIM(REPLACE(RFC, ' ', '')))             AS  RFC,
    RTRIM(LTRIM(Tipo))              AS  Tipo,
    RTRIM(LTRIM(Razon_Social))  AS  Razon_Social
FROM    [Roga].[dbo].[RFC_Empresa_Buzon_Fiscal]
WHERE   RTRIM(LTRIM(REPLACE(RFC, ' ', ''))) LIKE  @RFC

有人可以帮助我吗?

3 个答案:

答案 0 :(得分:0)

好像你没有添加它所期望的参数(你在@eRFC中有一个额外的'e'。

你有:

command.Parameters.AddWithValue("@eRFC", erfc);

尝试将其更改为:

command.Parameters.AddWithValue("@RFC", erfc);

答案 1 :(得分:0)

更改您的代码 command.Parameters.AddWithValue(“@ RFC”,@ erfc);

要 command.Parameters.AddWithValue(“@ RFC”,erfc);

因为“erfc”是您传递给参数的值。

答案 2 :(得分:0)

试试这个,

SqlCommand command = new SqlCommand("Consulta_RFC_Empresa @RFC", conn);