Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 管理大量常量的最佳方法是什么_Oracle_Plsql - Fatal编程技术网

Oracle 管理大量常量的最佳方法是什么

Oracle 管理大量常量的最佳方法是什么,oracle,plsql,Oracle,Plsql,我目前正在开发一个非常复杂的程序,该程序处理输入表中的行,并且每个记录都有大量可能的结果。因此,我为结果消息定义了大量常量。记录中有一条成功消息,但有许多可能的警告和错误 我的第一个想法是在包体级别定义这些消息的所有常量,但随后我决定将每个常量移动到使用它的过程中。我现在在猜测这个决定,并考虑将所有内容移回包体级别。定义这么多常量的最佳方法是什么?易于维护是我的终极目标,因为它太复杂了。我认为这是一个品味问题。在我的应用程序中,我将所有错误代码放入一个错误包中。所有主要的和常用的常量我都放在一个

我目前正在开发一个非常复杂的程序,该程序处理输入表中的行,并且每个记录都有大量可能的结果。因此,我为结果消息定义了大量常量。记录中有一条成功消息,但有许多可能的警告和错误


我的第一个想法是在包体级别定义这些消息的所有常量,但随后我决定将每个常量移动到使用它的过程中。我现在在猜测这个决定,并考虑将所有内容移回包体级别。定义这么多常量的最佳方法是什么?易于维护是我的终极目标,因为它太复杂了。

我认为这是一个品味问题。在我的应用程序中,我将所有错误代码放入一个错误包中。所有主要的和常用的常量我都放在一个单独的包中,没有一个包体。

我认为这是一个品味问题。在我的应用程序中,我将所有错误代码放入一个错误包中。所有主要的和常用的常量我都放在一个单独的包中,没有包体。

同样,这是一个品味问题,但我倾向于在包规范级别而不是包体上放一个命名常量列表,以便应用程序的任何部分都可以引用它们。如果我想更改c_err_for_-specific_-reason_x使用的错误代码,它将成为一个单独的地方

如果我想隐藏代码并将它们放在主体中,我会有一个get\u error\u codep\u get\u error\u name varchar函数,它根据您传递的有效常量名进行转换


我在不同的项目上都做过这两件事,但大多数时候都倾向于列表而不是函数。如果函数是一个表驱动的数据源,我倾向于使用它。

同样,这是一个品味问题,但我倾向于在包规范级别而不是包体中列出命名常量,以便应用程序的任何部分都可以引用它们。如果我想更改c_err_for_-specific_-reason_x使用的错误代码,它将成为一个单独的地方

如果我想隐藏代码并将它们放在主体中,我会有一个get\u error\u codep\u get\u error\u name varchar函数,它根据您传递的有效常量名进行转换


我在不同的项目上都做过这两件事,但大多数时候都倾向于列表而不是函数。如果函数是表驱动的数据源,我倾向于使用它。

它。。。等等。。。看情况

由于当前在包体中定义了常量,因此不需要在包外部公开访问它们。所以在规范中定义它们并不能给你带来任何好处


我遵循的规则是:在所需的最小范围内定义常量。因此,如果一个常量只在一个过程中使用,请在该过程中定义它。如果在多个过程中使用,请在正文中定义。如果其他软件包或非软件包SP中的代码在其他地方使用它,但仅在使用特定软件包时使用,请在该软件包的规范中定义它。如果它被其他代码用于一般用途,请将它放在此类通用常量的单独规范中。

它。。。等等。。。看情况

由于当前在包体中定义了常量,因此不需要在包外部公开访问它们。所以在规范中定义它们并不能给你带来任何好处


我遵循的规则是:在所需的最小范围内定义常量。因此,如果一个常量只在一个过程中使用,请在该过程中定义它。如果在多个过程中使用,请在正文中定义。如果其他软件包或非软件包SP中的代码在其他地方使用它,但仅在使用特定软件包时使用,请在该软件包的规范中定义它。如果它被其他代码用于通用,请将其放在此类通用常量的单独规范中。

谢谢,非常有用!谢谢,非常有帮助!谢谢,非常有帮助!谢谢,非常有帮助!就个人而言,如果有很多结果信息,我会考虑把它们放在查找表中。这样,我就可以选择使用一个高效的查询,一口吞下所有的数据,而不是在过程代码中执行大量的if/then/else或case语句。但是,如果个人有很多的结果信息,我会考虑把它们放在查找表中。这样,我就可以选择使用一个高效的查询,一口吞下所有的数据,而不是在过程代码中执行大量的if/then/else或case语句。但是YMMV。