sql >> Databasteknik >  >> RDS >> Oracle

anropa en Oracle-funktion som gör en infogning/uppdatering från PHP?

En funktion som gör DML kan inte anropas i en SELECT uttalande oavsett anropsspråk.

Om du vill göra DML och returnera ett värde, skulle det vara mycket mer meningsfullt att skapa en lagrad procedur med en OUT parameter istället för att använda en funktion. Så det skulle vara mycket mer meningsfullt att

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;

och sedan anropar den lagrade proceduren från PHP

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

Om du inte vill göra det, är min gissning att du kan göra något liknande också (anpassat från ett av skripten på sidan 164 i Underground PHP och Oracle Manual )

<?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. SQL Server-format decimaler med kommatecken

  2. Visa index i MySQL-tabellen

  3. Att kombinera SELECT DISTINCT med UNION DISTINCT i MySQL - någon effekt?

  4. Ansluter till MySQL från andra maskiner