barman
01-07-2004, 13:10:08
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,:DES);
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.
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,:DES);
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.