嵌套语句块
可以使用 BEGIN 和 END 关键字来定界嵌套在另一个语句块中的语句块。
引用 SPL 变量和异常处理程序的作用域
BEGIN 和 END 关键字可以限制 SPL 变量和异常处理程序的作用域。在 BEGIN 和 END 语句
块中的变量声明和异常处理程序定义是语句块局部的,在语句块外面不可见。下面的代码使用了
BEGIN 和 END 语句块来限定变量引用的作用域:
CREATE DATABASE demo;
CREATE TABLE tracker (
who_submitted CHAR(80), -- Show what code was running.
value INT, -- Show value of the variable.
sequential_order SERIAL -- Show order of statement execution.
);
CREATE PROCEDURE demo_local_var()
DEFINE var1, var2 INT;
LET var1 = 1;
LET var2 = 2;
INSERT INTO tracker (who_submitted, value)
VALUES ('var1 param before sub-block', var1);
BEGIN
DEFINE var1 INT; -- same name as global parameter.
LET var1 = var2;
INSERT INTO tracker (who_submitted, value)
VALUES ('var1 var defined inside the "IF/BEGIN".', var1);
END
INSERT INTO tracker (who_submitted, value)
VALUES ('var1 param after sub-block (unchanged!)', var1);
END PROCEDURE;
EXECUTE PROCEDURE demo_local_var();
SELECT sequential_order, who_submitted, value FROM tracker
ORDER BY sequential_order;
这个示例声明了三个变量,其中两个名为 var1。(这里创建的名称冲突是为了说明哪种变量是可
见的。通常建议对不同变量不要使用相同的名称。因为冲突的变量名会造成代码可读性差并且难维
护。)
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




