Ver Mensaje Individual
  #1  
Antiguo 01-07-2004
Avatar de barman
barman barman is offline
Miembro
 
Registrado: may 2003
Posts: 139
Reputación: 22
barman Va por buen camino
STORE PROCEDURE "RETURNS".

La verdad me ha costado bastante, hasta que lo he sacado.
Bueno es bastante basico, un procedimiento que devuelve valores.

si lo hacemos asi

$stmt = " execute PROCEDURE PR1";
$qu = ibase_query($idbase,$stmt);
Realiza lo que hay dentro del procedimiento, pero no devuelve valores,
ademas ibase_errmsg(); devuelve message length error (encountered 0, expected 8 "depende del valor que debe devolver")

la forma que creo que es la correcta es la siguiente:

$qu= ibase_query($idbase,'select * from PR2');
$row= ibase_fetch_row($qu);
echo $row["0"], $row["1"];


El procedimiento de pruebas.

SET TERM @
CREATE PROCEDURE PR1
RETURNS (DES CHAR(20) ,COD INTEGER)
AS
BEGIN
DES = "HOLA";
COD = 2;
insert into uno (codigo,descripcion)
values (:COD,ES);
SUSPEND; ->es obligatorio

END @

Tabla

create table uno
(
codigo integer,
descripcion char(25)
);


SI se le quiere pasar algun valor

$stmt = " select * from PR2 ('MAMA') ";
$qu = ibase_query($idbase,$stmt);

El procedimiento

SET TERM @
CREATE PROCEDURE PR2 (descrip char (25))
RETURNS (DES CHAR(20) ,COD INTEGER)
AS
BEGIN
DES = "HOLA";
COD = 2;
insert into uno (codigo,descripcion)
values (:COD,:descrip);
SUSPEND;

END @







Pues nada eso es todo, agradeceria cualquier comentario sobre el codigo.
Responder Con Cita