Я использовал приведенный ниже код для выполнения хранимой процедуры oracle с использованием php.
$s = oci_parse($db, 'begin :bind2 := XXXXXXXXX(:bind1); end;');
if(!$s)
{
echo "wrong";
}
else
{
echo "Right";
$in_var = 'XXXXXXX';
$in = oci_bind_by_name($s, ':bind1', $in_var);
if(!$in)
{
echo "Incorrect in";
}
else
{
echo "Correct in";
$cursor = oci_new_cursor($db);
// On your code add the latest parameter to bind the cursor resource to the Oracle argument
$k = oci_bind_by_name($s,':bind2', $cursor, -1, OCI_B_CURSOR);
if(!$k)
{
echo "Wrong";
}
else
{
echo "Correct";
// Execute the statement as in your first try
$execute = oci_execute($s) or die ("Unable to execute query\n");
if(!$execute)
{
echo "false";
}
else
{
echo "correct";
// and now, execute the cursor
$result = oci_execute($cursor,OCI_DEFAULT);
echo $result;
//oci_bind_by_name($s, ":bind2", $out_var, 20); // 20 is the return length
//oci_execute($s,OCI_DEFAULT);
//echo "Procedure returned value: " . $out_var;
// Logoff from Oracle...
oci_free_statement($s);
oci_close($db);
}
}
}
}
Я получаю приведенную ниже ошибку после выполнения приведенного выше фрагмента кода.
"oci_execute (): ORA-06550: строка 1, столбец 7: PLS-00306: неправильный номер или типы аргументов при вызове «XXXXXXXXX» ORA-06550: строка 1, столбец 7: PL / SQL: оператор игнорируется в / opt /lampp / htdocs / usermanagemet / callOraProc.php в строке 79 Невозможно выполнить запрос "
Моя процедура:
CREATE OR REPLACE FUNCTION XXXXXXXXX(
username IN VARCHAR2)
RETURN VARCHAR2
AS
v_query VARCHAR2( 100);
v_out VARCHAR2(20);
BEGIN
v_query := 'ALTER USER '|| username ||
' ACCOUNT LOCK
PROFILE GNVLOCK';
--dbms_output.put_line(v_query);
EXECUTE immediate v_query;
RETURN 'true';
EXCEPTION
WHEN OTHERS THEN
RETURN SQLCODE;
END SLT_GNVUSER_DISABLE;
Кто-нибудь знает, что мне здесь не хватает?