有没有办法声明可以在块的DECLARE部分和C#等其他地方使用的全局变量或常量?
我有几个脚本在日志表上设置不同的状态,具体取决于它们的操作是否成功。 我们这样:
UPDATE LOG_TABLE SET STATUS = ''success' WHERE OBJECT_ID = :object_id
此外,我们还有一个C#应用程序,可以执行某些无法从Oracle完成的操作。此应用程序还根据其运营成功设置了状态。
由于某些Status用于多个脚本和C#,我想在一个地方定义它们。然后从其他地方访问和使用它们。
有没有办法可以声明类似于全局常量的东西,以后可以在PL / SQL块中使用,如下所示:
GLOBAL ORACLE CONSTANT=> MY_CONSTANT
DECLARE
my_update_script VARCHAR2(300) := 'UPDATE LOG_TABLE SET STATUS = '''|| MY_CONSTANT ||''' WHERE OBJECT_ID = :object_id;
还可以从C#中使用它吗?
答案 0 :(得分:1)
创建全局变量的最佳方法是在包中创建它。
像:
CREATE OR REPLACE PACKAGE PKG_PARAM AS
PROCEDURE SET_MY_CONSTANT (P_MY_CONSTANT IN VARCHAR2);
MY_CONSTANT VARCHAR2 (30);
END PKG_PARAM;
您可以像
一样使用它my_update_script VARCHAR2(300) := 'UPDATE LOG_TABLE SET STATUS = '''|| PKG_PARAM.MY_CONSTANT ||''' WHERE OBJECT_ID = :object_id;
您还可以通过在包内创建一个过程来更改变量的值:
CREATE OR REPLACE PACKAGE BODY PKG_PARAM AS
PROCEDURE SET_MY_CONSTANT (P_MY_CONSTANT IN VARCHAR2)
IS
BEGIN
MY_CONSTANT := P_MY_CONSTANT;
END;
END PKG_PARAM;
然后执行你的程序:
EXEC PKG_PARAM.SET_MY_CONSTANT('ASIA');