包中的变量和列名称相同时,优先列名
create table test(a int); insert into test values(1); CREATE OR REPLACE function GET_AVG_PRICE() RETURN text IS a int; BEGIN -- 列名 包变量 select a into a from test limit 1; dbms_output.put_line(a); return a || ''; END GET_AVG_PRICE; /
包名和表名有重复时,优先表名(23.3版本禁止重复)
create table tn (id int); create package tn IS id text; end; / CREATE OR REPLACE function abc() RETURN text IS a tn.id%type; -- 引用表 类型为int v text; BEGIN select pg_typeof(a) into v ; dbms_output.put_line(v); return v; END abc; /
另外包名和schema名称不允许重复,所以不存在冲突的情况。