Método básico de chamar um procedimento armazenado e usar o valor de retorno
Autor:Eve Cole
Data da Última Atualização:2009-05-31 00:08:21
Nunca encontrei uma boa maneira de referenciar procedimentos armazenados com valores de retorno, o que me fez fazer muitos desvios na adição de dados. Recentemente, depois de consultar muitas informações, finalmente encontrei em uma instância da Microsoft.
Primeiro escreva um procedimento armazenado com um valor de retorno
criar procedimento proc_name
@para1 nchar(20), --parâmetros de entrada
@para2 int = null out --parâmetros de saída para uso do programa
como
ativar nocount
if (não existe (selecione * do funcionário onde em_name=@para1 ))
começar
inserir nos valores do funcionário (nome) (@para1)
select @para2=@@identity --retorna o ID do registro adicionado
return 1 --retorna se os dados foram adicionados com sucesso
fim
outro
retornar 0 --retornar falha
ir
Depois, há o método de chamar o procedimento armazenado
comando sqlcommand;
comando = new sqlcommand(proc_name,new sqlconnection(connectionstr));
command.paraments.add("@para1"),"name1"); //Parâmetros de entrada, nome do funcionário
command.paraments.add(new sqlparament("@para2", //Gerar um parâmetro de saída
SqlDbType.Int; //Tipo de dados do parâmetro
ParamenterDirection.OutPut, //Tipo de entrada e saída
0,
0,
string.Vazio,
DataRowVerstion.Default,
null) //Valor do parâmetro, obrigatório ao inserir parâmetros
);
command.commandtype=commandtype.StoredProcedure;
comando.connection.open();
comando.executenonQuery();
int pkid=(int)command.Parameters["@para2"].value; //Obtém o valor do parâmetro de saída
comando.connection.close();
Aqui estão os parâmetros de saída de referência. Se você deseja fazer referência ao valor de retorno (se os dados foram adicionados com sucesso), você só precisa alterar o tipo de ParamenterDirection para returnvalue e alterar você mesmo o nome do parâmetro;