PHP + Oracle, brak możliwości wysłania zapytania

Witam.

Przerabiam strone kolegi na swoją wersje. U niego w pliku jest tak:

function wpisz_pracownika($idd, $imie_pracownika, $nazwisko_pracownika, $pesel, $nip, $zatrudniono, $adres, $funkcja_pracownika, $zoo, $telefon)
    {
		$db = "(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)
		(HOST=217.173.198.132) (PORT=1521))) (CONNECT_DATA=(SID=orcl)))";
	
		$conn = ocilogon(" ***", "***", $db);
		if ($conn)
		{ 
				$stid = oci_parse($conn, 'begin insert_or_update_pracownik(:p1, :p2, :p3, :p4, :p5, :p6, :p7, :p8, :p9, :p10); end;');
				oci_bind_by_name($stid, ':p1', $idd);	
				oci_bind_by_name($stid, ':p2', $imie_pracownika);
				oci_bind_by_name($stid, ':p3', $nazwisko_pracownika);
				oci_bind_by_name($stid, ':p4', $funkcja_pracownika);
				oci_bind_by_name($stid, ':p5', $pesel);	
				oci_bind_by_name($stid, ':p6', $nip);
				oci_bind_by_name($stid, ':p7', $telefon);
				oci_bind_by_name($stid, ':p8', $adres);	
				oci_bind_by_name($stid, ':p9', $zatrudniono);
				oci_bind_by_name($stid, ':p10', $zoo);
				oci_execute($stid);
		}else
		{
			$err= OCIError();
			echo "BLAD POLACZENIA Z BAZA". $ERR[text];
		}
    }

I oczywiście wszystko działa. Zmienne są brane z innego pliku:

if( isset( $_REQUEST['imie_pracownika']) isset($_REQUEST['telefon']) ) 
	{ 
		$iddd = null;
		if(isset( $_REQUEST['idd']))
			$iddd = $_REQUEST['idd'];
		wpisz_pracownika($iddd, $_REQUEST['imie_pracownika'], $_REQUEST['nazwisko_pracownika'], $_REQUEST['pesel'], $_REQUEST['nip'], $_REQUEST['zatrudniono'], $_REQUEST['adres'], $_REQUEST['funkcja_pracownika'], $_REQUEST['zoo'], $_REQUEST['telefon']);
	}

Ja to przerobiłem swoje potrzeby tak:

Plik wyjściowy:

if( isset( $_REQUEST['imie_kierowcy']) isset($_REQUEST['firma'])) 
	{ 
		$iddd = null;
		if(isset( $_REQUEST['idd']))
			$iddd = $_REQUEST['idd'];
		wpisz_kierowce($iddd, $_REQUEST['imie_kierowcy'], $_REQUEST['nazwisko_kierowcy'], $_REQUEST['uprawnienia'], $_REQUEST['firma']);
	}

oraz plik gdzie idzie zapytanie:

function wpisz_kierowce($idd, $imie_kierowcy, $nazwisko_kierowcy, $uprawnienia, $firma)
    {
		$db = "(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)
		(HOST=217.173.198.132) (PORT=1521))) (CONNECT_DATA=(SID=orcl)))";
	
		$conn = ocilogon(" ***", "***", $db);
		if ($conn)
		{ 
				$stid = oci_parse($conn, 'begin insert_or_update_kierowca(:p1, :p2, :p3, :p4, :p5); end;');
				oci_bind_by_name($stid, ':p1', $idd);	
				oci_bind_by_name($stid, ':p2', $imie_kierowcy);
				oci_bind_by_name($stid, ':p3', $nazwisko_kierowcy);
				oci_bind_by_name($stid, ':p4', $uprawnienia);
				oci_bind_by_name($stid, ':p5', $firma);
				oci_execute($stid);
		}else
		{
			$err= OCIError();
			echo "BLAD POLACZENIA Z BAZA". $ERR[text];
		}
    }

Niestety przy dodawaniu kierowce wywala błąd:

Warning : oci_execute() [function.oci-execute]: ORA-06550: linia 1, kolumna 7: PLS-00201: identyfikator ‘INSERT_OR_UPDATE_KLIENT’ powinien by� zadeklarowany ORA-06550: linia 1, kolumna 7: PL/SQL: Statement ignored in C:\HostingSpaces\LocalUser\s81389\s81389.hosting.we.po.opole.pl\wwwroot\krzys\manipulacje.php  on line  97

 

Pomóżcie bo już przy tym siedze pare godzin :confused:

Insert_or_update_pracownik jest jakąś tam procedurą w składowaną w bazie danych Oracle.

Pytanie czy po zmianie wywołania procedury w skrypcie php założyłeś nową w bazie danych ?

Bo wygląda na to, że brakuje procedury insert_or_update_kierowca bądź też użytkownik, na którego php się loguje nie ma do niej dostępu. Może to być brak grantów bądź synonimu publicznego lub prywatnego.

 

Ukryj adres IP hosta z motorem bazy danych…

 

Pozdrawiam

AdamW

Oto chodziło :D 

Temat do usunięcia ! :smiley: