PDA

Ver la Versión Completa : Problema con adocommand stored procedure


buffygcs
09-06-2005, 21:58:31
Hola tengo un procedimiento almacenado:

CREATE PROCEDURE busca_pais
@pais_buscado varchar(5)

AS
if @pais_buscado is null
begin
raiserror('Codigo de pais con valor en blanco, Verifique!',14,1)
return
end

select setctps_desc
from setctps
where pais_code = @pais_buscado
GO

Y tengo el siguiente codigo en delphi

principal.adocommand.CommandType:= cmdStoredProc;
principal.adocommand.CommandText:= 'busca_pais';
principal.adocommand.Parameters.Refresh;

principal.adocommand.Parameters.ParamByName('@pais_buscado').Value:= pais;
principal.adocommand.Execute;
resultado:=principal.command2.Parameters.ParamValues['@RETURN_VALUE'];

El problema es que resultado siempre es "0" no se porque, intente hacer lo mismo con adoprocedure pero me dice que no se puede realizar debido a que el dataset esta cerrado :confused: , espero que alguien me pueda decir quee estoy haciendo mal, gracias

Aztaroth
09-06-2005, 22:07:50
CREATE PROCEDURE busca_pais
@pais_buscado varchar(5)

AS
if @pais_buscado is null
begin
raiserror('Codigo de pais con valor en blanco, Verifique!',14,1)
return
end

DECLARE @RESULTADO int

select @RESULTADO = setctps_desc
from setctps
where pais_code = @pais_buscado

SET @RETURN_VALUE = @RESULTADO

GO


te falta decirle al procedimiento almacenado cual es el valor a regresar, por que si no te devuelve el resultado de la ejecucion del procedimiento si no ocurre ningun error entonces devuelve 0 si no te devolvera el numero de error

buffygcs
10-06-2005, 17:37:52
El problema es que no puedo modificar el stored procedure ya que este es usuado por otra aplicacion ajena al programa que estoy haciendo, si corro el stored procedure en el analizador de consultas me regresa la columna correspondiente, el problema es que no se como agarrar ese resultado en una variable, alguien me podria ayudar :confused:

Aztaroth
10-06-2005, 21:10:41
Para empezar el control que usas es un TAdoCommand que se llama adocommand todo esta bien hasta la ultima linea que veo que estas usando otro nombre diferente

principal.command2.Parameters.ParamValues['@RETURN_VALUE'];


donde se supone deberias utilizar adocommand, la otra es que te recomiendo usar mejor

resultado := principal.adocommand.Parameters.ParamByName('@RETURN_VALUE').Value;