Storage Procedure C sharp com Firebird

09/02/2018

0

Galera eu fiz uma Procedure no Banco de dados FIrebird ela executa e me traz um retorno, porém eu não estou conseguindo pegar o retorno no c# e grava em uma variavel ex Tenho minha tabela de usuários:

CREATE GENERATOR GEN_ID_USUARIOS;

CREATE TABLE TB_USUARIOS (
ID INTEGER NOT NULL,
EMPRESA INTEGER NOT NULL,
USUARIO VARCHAR(100) NOT NULL,
SENHA VARCHAR(10) NOT NULL,
TIPO CHAR(1) NOT NULL,
SETOR VARCHAR(1000) NOT NULL,
TESTE2 VARCHAR(100)
);

ALTER TABLE TB_USUARIOS ADD PRIMARY KEY (ID, EMPRESA);

Pra inserir nela tenho a Procedure que me retorna um output Processo= ''''''''''''''''''''''''''''''''UPDATE'''''''''''''''''''''''''''''''' ou Sucesso = ''''''''''''''''''''''''''''''''INSERT''''''''''''''''''''''''''''''''
SET TERM ^ ;

create or alter procedure PCD_CAD_USUARIOS (
EMPRESA integer not null,
USUARIO varchar(100) not null,
SENHA varchar(10) not null)
returns (
PROCESSO varchar(50))
as
begin

IF (EXISTS(SELECT usuario FROM tb_usuarios where (USUARIO = :USUARIO) AND (EMPRESA = :EMPRESA))) THEN
begin
UPDATE TB_USUARIOS SET
EMPRESA = :EMPRESA,
USUARIO = :USUARIO,
SENHA = :SENHA
WHERE (EMPRESA = :EMPRESA) AND
(USUARIO = :USUARIO);
PROCESSO = ''''''''''''''''''''''''''''''''UPDATE'''''''''''''''''''''''''''''''';
END
ELSE
begin

INSERT INTO TB_USUARIOS (ID, EMPRESA, USUARIO, SENHA, TIPO, SETOR)
VALUES (''''''''''''''''''''''''''''''''0'''''''''''''''''''''''''''''''', :EMPRESA, :USUARIO, :SENHA, ''''''''''''''''''''''''''''''''A'''''''''''''''''''''''''''''''', '''''''''''''''''''''''''''''''',1'''''''''''''''''''''''''''''''');
PROCESSO = ''''''''''''''''''''''''''''''''INSERT'''''''''''''''''''''''''''''''';
end
end

Na qual eu não estou conseguindo pegar no c# esse campo Processo pra fazer um if se for insert else se for update para informar ao usuario final:
Abaixo Código do c#.

fbSQL = "";

fbSQL = "execute procedure pcd_cad_usuarios(1, ''''''''''''''''''''''''''''''''TESTE'''''''''''''''''''''''''''''''', ''''''''''''''''''''''''''''''''123456'''''''''''''''''''''''''''''''')" ;
FbCommand comando = new FbCommand(fbSQL, Connection.fbcnn);
comando.CommandType = CommandType.StoredProcedure;
FbDataReader dr = comando.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dr);

teste = dt.Rows[0]["ID"].ToString();

e quando eu rodo o Programa apresenta o seguinte erro:
System.IndexOutOfRangeException: ''''''''''''''''''''''''''''''''Não há linha na posição 0.''''''''''''''''''''''''''''''''

Sendo que se eu executar somente um select ele funciona.
Obrigado.
Adriano Me

Adriano Me

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar