반응형
PL/SQL에서 변수의 종류를 보는 방법은?
SQL의 DUMP 함수처럼 변수의 정확한 유형을 보여주는 함수가 PL/SQL에 있습니까?
나는 다음을 시도했습니다.
DECLARE
l_variable INTEGER := 1;
BEGIN
DBMS_OUTPUT.PUT_LINE (DUMP (l_variable));
END;
그러나 다음과 같은 오류가 발생합니다.
PLS-00204: 함수 또는 의사열 'DUMP'는 SQL 문 내부에서만 사용할 수 있습니다.
PL/Scope을 사용하여 이 기능을 만들 수 있습니다.그러나 익명 블록에서는 작동하지 않으며 변수를 문자열로 참조해야 합니다.
create or replace function get_plsql_type_name
(
p_object_name varchar2,
p_name varchar2
) return varchar2 is
v_type_name varchar2(4000);
begin
select reference.name into v_type_name
from user_identifiers declaration
join user_identifiers reference
on declaration.usage_id = reference.usage_context_id
and declaration.object_name = reference.object_name
where
declaration.object_name = p_object_name
and declaration.usage = 'DECLARATION'
and reference.usage = 'REFERENCE'
and declaration.name = p_name;
return v_type_name;
end;
/
예:
alter session set plscope_settings = 'IDENTIFIERS:ALL';
create or replace type my_weird_type is object
(
a number
);
create or replace procedure test_procedure is
var1 number;
var2 integer;
var3 my_weird_type;
subtype my_subtype is pls_integer range 42 .. 43;
var4 my_subtype;
begin
dbms_output.put_line(get_plsql_type_name('TEST_PROCEDURE', 'VAR1'));
dbms_output.put_line(get_plsql_type_name('TEST_PROCEDURE', 'VAR2'));
dbms_output.put_line(get_plsql_type_name('TEST_PROCEDURE', 'VAR3'));
dbms_output.put_line(get_plsql_type_name('TEST_PROCEDURE', 'VAR4'));
end;
/
begin
test_procedure;
end;
/
NUMBER
INTEGER
MY_WEIRD_TYPE
MY_SUBTYPE
DUMP는 오버로드된 함수입니다.3개의 과부하가 있습니다.
따라서 코드 내에서 동일한 것을 시뮬레이션할 수 있습니다.
function myDump (x Varchar2) return varchar2 is begin return('string') ; end ;
function myDump (x number) return varchar2 is begin return('integer') ; end ;
function myDump (x date) return varchar2 is begin return('date') ; end ;
위의 코드가 제대로 작동하지 않을 수도 있지만 문제를 어떻게 처리할지에 대한 아이디어를 제공해야 합니다.
이것이 당신의 요구사항을 충족시켜 주기를 바랍니다.
참고: 이러한 기능을 패키지에 넣고 그에 따라 사용할 수 있습니다.
declare
a number(10,3);
type_info varchar2(400);
begin
a := 55.5;
select dump(a) into type_info from dual;
DBMS_OUTPUT.PUT_LINE(type_info);
end;
언급URL : https://stackoverflow.com/questions/17134293/how-to-view-the-type-of-a-variable-in-pl-sql
반응형
'programing' 카테고리의 다른 글
| OpenBSD 7.3에서 Wordpress API 및 Plugins API에 액세스할 수 없음 (0) | 2023.10.04 |
|---|---|
| Wocommerce 이메일 알림에서 원하지 않는 주문 항목 메타 데이터 필터링 (0) | 2023.10.04 |
| 단순 유형 별칭 - Oracle 모범 사례 (0) | 2023.10.04 |
| 데이터베이스 오류: ORA-00911: 잘못된 문자 (0) | 2023.10.04 |
| Jest expect에 맞춤형 메시지를 추가하는 방법은? (0) | 2023.10.04 |