무엇을해야할지 모르겠습니다. 나는 함수를 썼다 오류없이 그것을 컴파일하지만이 코드를 실행하면 다음 내가 가지고 :이 기능입니다ORA-06550, PLS-00103, ORA-06512 on function
ORA-0650: line 3, column 14:
PLS-00103: Encountered the symbol "/" when expecting one of the following:
:= . (@ % ; not null range default character
ORA-06512: at line 58
Vendor code 6550
:
create or replace
FUNCTION "GET_MUSICIAN_FUN"
(
i_mus_id IN musicians.id%type
)
RETURN musicians%ROWTYPE
AS
o_mus_rec musicians%ROWTYPE;
BEGIN
SELECT m.id, m.first_name, m.last_name, m.born, m.died , m.picture_path, m.bio
INTO o_mus_rec
FROM musicians m
WHERE id = i_mus_id;
RETURN o_mus_rec;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RAISE_APPLICATION_ERROR(-20005, 'Found nothing.');
WHEN TOO_MANY_ROWS THEN
RAISE_APPLICATION_ERROR(-20006, 'Found too many.');
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(-20007, 'Cannot get musician.');
END GET_MUSICIAN_FUN;
편집 : 나는 그것을 호출
:
declare
result musicians%rowtype;
begin
result := get_musician_fun(53);
end;
/
내가 얻을 : "anonymous block completed"
그러나이 :
$con = oci_connect("yoni", "yoni", "//localhost/xe");
$s = oci_parse($con, "begin :rc := GET_MUSICIAN_FUN(53); end;");
$rc = oci_new_cursor($con);
oci_bind_by_name($s, ":rc", $rc, -1, OCI_B_CURSOR);
oci_execute($s); // line 41
oci_execute($rc, OCI_DEFAULT);
oci_fetch_all($rc, $res, null, -1, OCI_FETCHSTATEMENT_BY_ROW); // line 43
return $res;
를 내가 얻을 : 나는 어떤 PHP는 전문가는 아니지만 그러나 당신은 PHP로 오라클 행 개체를 가져 오기 위해 노력하고
Warning
: oci_execute(): ORA-06550: line 1, column 14:
PLS-00382: expression is of wrong type
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored in... on line 41
Warning
: oci_fetch_all(): ORA-24338: statement handle not executed in... on line 43
SQL 개발자로부터. 또한 PHP 스크립트에서이 함수를 호출하여 같은 오류가 발생했습니다. –
SQL 개발자는 Ctrl-F10 (실행)을 사용합니다. 기본 코드는 어떻게 볼 수 있습니까? –
@YoniLevy :'PHP'는 잘 모르겠지만 오류 진술을 보면, PHP 쪽에서 올바른 것을 가져 오지 않는다고 생각합니다. PHP에서 테이블 음악가의 변수를 선언하고 반복 할 필요가 있다고 생각합니다. 링크가 도움이 되길 바랍니다. [link] (http://stackoverflow.com/questions/14055397/recover-a-table-of-varchar2-from-a-pl-sql-function-in-php) –