sql - 如何为存储过程参数选择默认值?

标签 sql oracle plsql oracle11g

获取过程参数的默认值时遇到问题:

CREATE PROCEDURE foo(p_arg VARCHAR2:= 'FOO')
IS
BEGIN
 NULL;
END;
/

SELECT argument_name, default_value
  FROM sys.all_arguments
 WHERE object_name = 'FOO';

 ARGUMENT_NAME | DEFAULT_VALUE
 ------------------------------
 P_ARG         |  (Memo)

我为过程参数设置的默认值不会显示在输出中。我所看到的只是 default_value 列中的(备忘录)。 Oracle 文档没有帮助,因为此功能“保留供将来使用”: http://docs.oracle.com/cd/E16655_01/server.121/e17615/refrn20015.htm#i1573843

还有其他方法可以读取过程参数的默认值吗?

最佳答案

不幸的是,*_arguments数据字典 View 的default_value列永远不会被填充。由于某种原因,Oracle 将其保留一段时间以供将来使用。您可以看到某个参数是否分配有默认值(defaulted 列),但缺少有关实际默认值的重要信息。在某种程度上,它被认为是一个文档错误。值得注意的是,dbms_describe 包也不提供有关参数实际默认值的信息。因此,它为您提供了一种检索参数默认值的选项 - 存储过程源代码解析,可以通过查询 *_source View 来获取。

关于sql - 如何为存储过程参数选择默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19727161/

相关文章:

SQL 服务器 2005 : Attach database using sp_attach_db with full text catalog

database - PL/SQL 在整个数据库中搜索一个字符串

sql - Oracle 数据库使用 SQL 检查保留

sql - SQL 查询中函数调用的性能影响(关于上下文切换)

python - cx_Oracle.DatabaseError : ORA-00922: missing or invalid option when trying to execute pl/sql using python

如果值为 "0",则 MySQL 不返回任何内容

php - SQL查询使用PHP显示x和y之间的所有数字

javascript - javascript 中带有包含撇号的变量的 SQL 语句

oracle - 有没有办法找到某个值何时被插入到 Oracle 数据库上的特定单元格中?

sql - Oracle SQL 组问题