C# .net 4.5.2를 사용하고 Oracle DB와 함께 작업하고 있습니다. 나는 RAW 출력 매개 변수가 기능 (PPF)를 호출 해요 : 내가 함께 출력 매개 변수를 초기화 내 코드에서oracle 원시 출력 매개 변수의 경우 DbType이되어야합니다.
FUNCTION GET_ACCESS_CONTEXT(pTId IN NUMBER,
pUId IN RAW,
pOId IN RAW,
pFId IN NUMBER,
pPF OUT RAW) RETURN RAW IS
TYPE IDS_TP IS TABLE OF RAW(32);
IDS IDS_TP;
BEGIN
WITH BASE AS(
select fl.*
from t_folders_access fa
inner join t_folders_links fl on fl.tenant_id = fa.tenant_id
and fl.from_family_id = fa.family_id
and fl.from_object_id = fa.object_id
where fa.user_object_id = pUId
and fa.tenant_id = pTId
and fa.family_id = 12345
and fl.deleted_object_flag = 0
and fl.from_family_id = 12345
and fl.family_id = 54321)
select base.from_object_id BULK COLLECT
INTO IDS
from base
start with base.family_id = 54321
and base.to_family_id = 12345
and base.to_object_id = pOId
connect by nocycle prior base.from_object_id = base.to_object_id
and base.family_id = 54321;
IF IDS.LAST = 0 OR IDS is null or IDS.LAST is null THEN
pPF := null;
DBMS_OUTPUT.put_line ('return ' || pOId);
return pOId;
else
DBMS_OUTPUT.put_line ('return ' || (IDS(IDS.FIRST)));
pPF := IDS(IDS.FIRST);
DBMS_OUTPUT.put_line ('return ' || IDS(IDS.LAST));
return IDS(IDS.LAST);
end if;
END;
을 :
DbType = DbType.Guid,
Size = 32,
Direction = ParameterDirection.Output,
ParameterName = "pPF"
나는 내 C#에서 함수를 호출하고있어 코드, 나는이 예외를 (같은 매개 변수를 직접 함수를 실행할 때 아무 예외도 ...) : "ORA-06502 : PL/SQL : 숫자 또는 값 오류 : 원시 가변 길이가 너무 깁니다.", 라인 : pPF := IDS(IDS.FIRST);
IDS(IDS.FIRST)
값은 5093A4805899EB448F96BF9976F230AF입니다. 다른 DbTypes를 시도했지만 도움이되지 않았습니다.
내가 뭘 잘못하고 있니?
전체 기능 코드를 표시 할 수 있습니까? –