
# 访问对象
未指定SCHEMA的存储过程将依据SEARCH_PATH的顺序查找对象，可能导致访问到非预期对象。如果不同模式中存在同名表、存储过程以及其他数据库对象，未明确指定SCHEMA可能引发意外结果。因此，建议在存储过程访问数据对象时，始终明确指定SCHEMA。
示例：
```
--创建两个不同的schema。
gaussdb=# CREATE SCHEMA best_practices_for_procedure1;
CREATE SCHEMA
gaussdb=# CREATE SCHEMA best_practices_for_procedure2;
CREATE SCHEMA
--在两个不同的schema下创建相同的存储过程。
gaussdb=# CREATE OR REPLACE PROCEDURE best_practices_for_procedure1.proc1() as
BEGIN
    dbe_output.print_line('in schema best_practices_for_procedure1');
END;
/
CREATE PROCEDURE
gaussdb=# CREATE OR REPLACE procedure best_practices_for_procedure2.proc1() as
BEGIN
    dbe_output.print_line('in schema best_practices_for_procedure2');
END;
/
CREATE PROCEDURE
--在不同的search_path下调用相同的存储过程可能存在差异。
gaussdb=# SET search_path TO best_practices_for_procedure1, best_practices_for_procedure2;
SET
gaussdb=# CALL proc1();
in schema best_practices_for_procedure1
 proc1
-------
(1 row)
gaussdb=# RESET search_path;
RESET
gaussdb=# SET search_path TO best_practices_for_procedure2, best_practices_for_procedure1;
SET
gaussdb=# CALL proc1();
in schema best_practices_for_procedure2
 proc1
-------
(1 row)
gaussdb=# RESET search_path;
RESET
gaussdb=# DROP SCHEMA best_practices_for_procedure1 cascade;
NOTICE:  drop cascades to function best_practices_for_procedure1.proc1()
DROP SCHEMA
gaussdb=# DROP SCHEMA best_practices_for_procedure2 cascade;
NOTICE:  drop cascades to function best_practices_for_procedure2.proc1()
DROP SCHEMA
```
