Oracle DB에 문제가 있습니다. 나는 SQL 개발자에서이 기능을 실행하려고하면ORA-6502, WEB
<?php
require_once 'includes/conn.php';
function connect_db()
{
if ($c=oci_pconnect(uname,pwd, host,'AL32UTF8'))
return $c;
else
die("ERROR");
}
$conn=connect_db();
$query = "BEGIN :ds_id :=DS.REG_DS1(:F_NAME);END;";
$stmt=oci_parse($conn,$query);
$f_name='John Doe';
$ds_id=-1;
oci_bind_by_name($stmt, ":ds_id", $ds_id);
oci_bind_by_name($stmt, ":F_NAME", $f_name);
if(oci_execute($stmt))
{
echo 'good';
}
else
print_r(oci_error($stmt));
?>
는 여기가 문제없이 실행 기능 REG_DS1
FUNCTION REG_DS1(F_NAME IN VARCHAR) RETURN NUMBER AS
DS_ID NUMBER(8,0):=9988;
BEGIN
-- INSERT INTO TEST VALUES(F_NAME,SYSDATE);
RETURN DS_ID;
END REG_DS1;
입니다. 하지만 위의 PHP 스크립트에서 실행하면, 그것은 나에게 오류가 있습니다 : 나는 다른 번호보다 100 DS_ID 변수를 변경하면
ORA-06502: PL/SQL: numeric or value error: character string buffer too small ORA-06512: at line 1 [offset] => 0 [sqltext] => BEGIN :ds_id :=DS.REG_DS1(:F_NAME);END;)
, 그것은 모두에서 잘 작동합니다. 하지만 내가 99 이상 번호로 설정하면 PHP 스크립트에서 오류가 발생합니다.
무엇이 문제입니까?
아아 나는 회답에 건설적인 도움이 될만한 정보를 알고 있지만, 기록을 위해 6502 태그는 https://stackoverflow.com/questions/tagged/6502에 태그가 질문 용으로 정의되어 있기 때문에 삭제했습니다. MOS Technology가 개발 한 "6502, 8 비트 마이크로 프로세서"와 관련이 있으며,이 ORA-06502 질문은 관련이 없다고 생각합니다. 순수 우연의 일치로 6502 8 비트 프로세서에는 ORA 명령이 있습니다. – Tommy