prueba esto, no lo he probado asi que igual tiene algun error de sintaxis:
Código SQL
[-]
COMMIT WORK;
SET TERM ^ ;
CREATE PROCEDURE DetalleTM (Des varchar (30),Codigo char (2))
RETURNS (Numero integer,TipoM varCHAR(40))
as
begin
Numero=0;
do
begin
if ( Des='Farmacia') then
begin
FOR select DETALLE FROM TIPO_MATERIAL
WHERE CODTIPOMATERIAL IN (select CODTIPOMATERIAL
FROM TIPOMATERIAL_CUENTACONTABLE
WHERE NROCUENTACON LIKE '125%'AND NROCUENTACON IN
(SELECT NROCUENTACON FROM CUENTA_CONTABLE WHERE CODREG=:Codigo))
into :TipoM; do
begin
numero = numero + 1;
suspend;
end
end
else
begin
FOR select DETALLE FROM TIPO_MATERIAL
WHERE CODTIPOMATERIAL IN (select CODTIPOMATERIAL
FROM TIPOMATERIAL_CUENTACONTABLE
WHERE NROCUENTACON LIKE '121%' and NROCUENTACON LIKE '122%' AND NROCUENTACON IN
(SELECT NROCUENTACON FROM CUENTA_CONTABLE WHERE CODREG=:Codigo))
into :TipoM do
begin
numero = numero + 1;
suspend;
end;
end
end^
la idea es hacer un FOR select y dentro del mismo un suspend.