sql >> Databáze >  >> RDS >> Oracle

volat funkci Oracle, která provádí vložení/aktualizaci z PHP?

Funkci, která používá DML, nelze volat v SELECT bez ohledu na volací jazyk.

Pokud chcete udělat DML a vrátit hodnotu, bylo by mnohem smysluplnější vytvořit uloženou proceduru s OUT parametr spíše než použití funkce. Mnohem větší smysl by tedy dávalo

CREATE OR REPLACE PROCEDURE proc_name_return( p_1    IN NUMBER,
                                              p_2    IN NUMBER,
                                              p_ret OUT VARCHAR2 )
AS
BEGIN
  p_ret := pkg_tools.replace.site( p_1, p_2 );
END;

a poté zavolejte tuto uloženou proceduru z PHP

$sql = 'BEGIN proc_name_return( :p_1, :p_2, :p_ret ); END;';

Pokud to nechcete udělat, odhaduji, že byste mohli udělat něco takového také (upraveno podle jednoho ze skriptů na straně 164 Příručka Underground PHP a Oracle )

<?php
$c = oci_connect('hr', 'hrpwd', 'localhost/XE');
$s = oci_parse($c, "begin :ret :=pkg_tools.replace_site(1121,3343); end;");
oci_bind_by_name($s, ':ret', $r, 200);
oci_execute($s);
echo "Result is: ".$r;
?>



  1. Sdružování připojení Postgresql v Erlangu

  2. nesprávné zabíjení mysqld - nyní se nespouští

  3. Kompletní kopírování postgresové tabulky pomocí SQL

  4. Řazení výsledku dotazu podle pole z jiné tabulky (MySQL)