我当前正在使用存储过程,但是在更改内容时遇到了一些问题,直到我添加CPF字段后,它才真正起作用。总是在尝试注册新用户时出现错误:
过程或函数指定的参数过多
我有此程序可以注册用户:
CREATE PROC FI_SP_IncClienteV2
@NOME VARCHAR (50) ,
@SOBRENOME VARCHAR (255),
@CPF VARCHAR(15) ,
@NACIONALIDADE VARCHAR (50) ,
@CEP VARCHAR (9) ,
@ESTADO VARCHAR (2) ,
@CIDADE VARCHAR (50) ,
@LOGRADOURO VARCHAR (500),
@EMAIL VARCHAR (2079),
@TELEFONE VARCHAR (15)
AS
BEGIN
INSERT INTO CLIENTES (NOME, SOBRENOME, CPF, NACIONALIDADE, CEP, ESTADO, CIDADE, LOGRADOURO, EMAIL, TELEFONE)
VALUES (@NOME, @SOBRENOME, @CPF, @NACIONALIDADE, @CEP, @ESTADO, @CIDADE, @LOGRADOURO, @EMAIL, @TELEFONE)
SELECT SCOPE_IDENTITY()
END
这段代码负责运行该过程,它是从另一个类继承的:
internal long Incluir(DML.Cliente cliente)
{
List<System.Data.SqlClient.SqlParameter> parametros = new List<System.Data.SqlClient.SqlParameter>();
parametros.Add(new System.Data.SqlClient.SqlParameter("Nome", cliente.Nome));
parametros.Add(new System.Data.SqlClient.SqlParameter("Sobrenome", cliente.Sobrenome));
parametros.Add(new System.Data.SqlClient.SqlParameter("CPF", cliente.CPF));
parametros.Add(new System.Data.SqlClient.SqlParameter("Nacionalidade", cliente.Nacionalidade));
parametros.Add(new System.Data.SqlClient.SqlParameter("CEP", cliente.CEP));
parametros.Add(new System.Data.SqlClient.SqlParameter("Estado", cliente.Estado));
parametros.Add(new System.Data.SqlClient.SqlParameter("Cidade", cliente.Cidade));
parametros.Add(new System.Data.SqlClient.SqlParameter("Logradouro", cliente.Logradouro));
parametros.Add(new System.Data.SqlClient.SqlParameter("Email", cliente.Email));
parametros.Add(new System.Data.SqlClient.SqlParameter("Telefone", cliente.Telefone));
DataSet ds = base.Consultar("FI_SP_IncClienteV2", parametros);
long ret = 0;
if (ds.Tables[0].Rows.Count > 0)
long.TryParse(ds.Tables[0].Rows[0][0].ToString(), out ret);
return ret;
}
internal DataSet Consultar(string NomeProcedure, List<SqlParameter> parametros)
{
SqlCommand comando = new SqlCommand();
SqlConnection conexao = new SqlConnection(stringDeConexao);
comando.Connection = conexao;
comando.CommandType = System.Data.CommandType.StoredProcedure;
comando.CommandText = NomeProcedure;
foreach (var item in parametros)
comando.Parameters.Add(item);
SqlDataAdapter adapter = new SqlDataAdapter(comando);
DataSet ds = new DataSet();
conexao.Open();
try
{
adapter.Fill(ds);
}
finally
{
conexao.Close();
}
return ds;
}
答案 0 :(得分:0)
因此,我按照Chetan Ranpariya的建议遍历了数据库中的所有内容,并且我注意到,即使我对存储过程进行了更改,也没有在数据库上对其进行更新。