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