举个例子,执行以下存储过程:db2 "call get_dbsize_info(?,?,?,0)"这个存储过程的schema是SYSPROC,可是上面为什么可以不指定schema呢,因为数据库会查看current path.e95fp7@suse1:~> db2 "values varchar(current path,80)"1 ...
显示全部举个例子,执行以下存储过程:
db2 "call get_dbsize_info(?,?,?,0)"
这个存储过程的schema是SYSPROC,可是上面为什么可以不指定schema呢,因为数据库会查看current path.
e95fp7@suse1:~> db2 "values varchar(current path,80)"
1
--------------------------------------------------------------------------------
"SYSIBM","SYSFUN","SYSPROC","SYSIBMADM","E95FP7"
按顺序检查schema下是否有该存储过程,SYSPROC在current path里,所以该存储过程能执行成功。但是当我们修改了current path,如:
e95fp7@suse1:~> db2 "set path=user"
DB20000I The SQL command completed successfully.
e95fp7@suse1:~> db2 "values varchar(current path,80)"
1
--------------------------------------------------------------------------------
"E95FP7"
再次执行存储过程,就报错了。
e95fp7@suse1:~> db2 "call get_dbsize_info(?,?,?,0)"
SQL0440N No authorized routine named "GET_DBSIZE_INFO" of type "PROCEDURE"
having compatible arguments was found. SQLSTATE=42884
收起