OT: Oracle8i, php a stored procedure
Vojtech Novacek
linux na netcore.cz
Úterý Leden 25 00:40:01 CET 2000
Dobry den,
k pristupu do Oraclu pouzivam php3.0.13 + oci8 fce.
Narazil jsem na problem, kdyz se snazim ziskat promenou ze stored
procedure. Vzdy se mi zobrazi chyba ORA-24374: define not done before
fetch or execute and fetch.
zde je muj skript:
<?php
/*
Inicializace promennych $user, $pass, $user_id
*/
$conn = OCILogon($user, $pass);
$stmt = OCIParse("DECLARE"
." userdata users%ROWTYPE;"
."BEGIN"
." get_user($user_id, userdata);"
."END;");
OCIDefineByName($stmt, "USERDATA", &$userdata);
OCIExecute($stmt);
OCIFetch($stmt);
OCIFreeStatement($stmt);
OCILogoff($conn);
echo "name : " . $userdata["name"];
?>
+ SQL:
CREATE TYPE address_t AS OBJECT
(
street VARCHAR2(50),
city VARCHAR2(30)
);
CREATE TABLE users
(
user_id NUMBER(16,0),
name VARCHAR2(30),
address address_t
);
CREATE PROCEDURE get_user
(
id IN users.user_id%TYPE,
userdata OUT users%ROWTYPE
)
IS
BEGIN
SELECT * INTO userdata FROM users WHERE user_id = id;
END;
Podotykam, ze v sql*plus mi pl/sql blok v OCIParse() fungoval normalne.
Take jsem zkusil pouzit postup pomoci fce OCIBindByName, ale s podobnym
vysledkem.
Uvitam jakoukoli radu nebo i uplne jiny postup, jak na to.
Diky
_---------------------------------------
Vojtech Novacek _-
--------------------------------
Další informace o konferenci Test