在 PL/SQL 中动态声明变量
Posted
技术标签:
【中文标题】在 PL/SQL 中动态声明变量【英文标题】:Declaring variables dynamically within PL/SQL 【发布时间】:2017-07-20 11:45:03 【问题描述】:程序是从输入字符串中提取数字。例如:ab123cde4f。现在,如果只有输入字符串有数字,那么在检查 Begin..End 块中的数字后,我将声明一个数字数据类型的变量(以提取数字)。如果没有数字,我不会声明任何变量,而只是给出输入字符串不包含任何数字的 dbms 输出。建议一个 pl/sql 块。
【问题讨论】:
在堆栈溢出时建议您先尝试编写一些代码 @tapabrata 为什么你不想声明任何变量? 显然正确的方法是声明一个数字数据类型的变量,但如果输入不包含任何数字,则不使用它。 可以在 PL/SQL 程序的 Begin End 块中声明任何变量吗?我完全同意,正确的方法是声明一个数字数据类型的变量,如果我的条件成立,就使用它。 【参考方案1】:如果您的问题是,是否可以在BEGIN...END block
中声明变量。不,你总是需要一个 declare
块。
但是,您也可以在 BEGIN...END
块内使用声明。
BEGIN
IF 1=1 THEN
DECLARE
v_chr VARCHAR2(100) := 'hello';
BEGIN
dbms_output.put_line(v_chr);
END;
ELSE
DECLARE
v_chr VARCHAR2(100) := 'world';
BEGIN
dbms_output.put_line(v_chr);
END;
END IF;
END;
不过我不建议这样做,只是定义一个变量更KISS。
【讨论】:
以上是关于在 PL/SQL 中动态声明变量的主要内容,如果未能解决你的问题,请参考以下文章