如何在PostgreSQL数据库中书写匿名块?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
测试=#,DO $ $ DECLARE 小姐:记录; 测试#,美元开始 测试$ #,FOR 小姐:拷贝1 . . 10 测试$ #,LOOP 测试$ #,execute & # 39; select loop_insert (1) & # 39;; 测试$ #,最终获得;循环; 测试$ #,$ $; 做 之前测试=# >看匿名块的执行效果:
测试=#,select count(*),得到lineitem; ,count ------- 7000年, (1,行), 测试=#,select count(*),得到lineitem; ,count ------- ,17000 - - - - - - - - - - - -→祝辞祝辞祝辞匿名块插入了10000条记录。 (1,行), 测试=#<强>补充:PostgreSql的PL/pgSQL块结构(在pgAdmin查询工具中如何执行语句块)强>
PostgreSql的PL/pgSQL块结构
本文我们学习PL/pgSQL结构块,包括如何写结构块和执行结构块。
<强>什么是结构块强>
PL/pgSQL是结构块语言,因此,PL/pgSQL函数或过程是通过结构块进行组织完。整结构块的语法如下:
[, & lt; & lt; label>祝辞,) [,声明 ,declarations 】 开始 ,声明; ,…… 最终获得[],label详细说明如下:
块有两部分组成:声明部分和主体部分。声明部分是可选的,而主体部分是必须的。块在结束关键字后面使用分号(,)表示结束。
块可以有个可选的标签在开始和结尾处。如果你想在块主体中使用出口语句或限定块中声明的变量名称时,需要使用块标签。
主体部分是编写代码的地方,每条语句需要使用分号结束。
PL/pgSQL块结构示例
下面示例描述一个简单块结构,一般称为匿名块:
DO $ $ & lt; & lt; first_block>比; 声明 ,counter integer :=, 0; 开始 ,counter :=, counter +, 1; ,RAISE NOTICE & # 39;从而current value of counter is % & # 39;,,计数器; 最终获得first_block $ $;运行结果:
注意:,,current value of counter is 1从pgAdmin中执行块,点击图示按钮:
注意做语句不属于块结构。它用于执行匿名块.PostgreSQL在9.0版本中引入做语句。
在声明部分定义变量计数器并设置为0。
在主体部分,是计数器值加1,通过提高注意语句输出其值。
first_block标签仅为了演示需要,本例中没有啥意义。
<强> * *什么是双($ $)符号? * * 强>
($ $)符号是单引号(& # 39;)的替代符号。开发PL/pgSQL时,无论是函数或过程,必须把主体部分放在一个字符串中,因此必须对主体部分的单引号进行转义表示:
& # 39;& lt; & lt; first_block>比; 声明 ,counter integer :=, 0; BEGIN , ,counter :=, counter +, 1; ,RAISE NOTICE & # 39; & # 39;从而current value of counter is % & # 39; & # 39;,计数器,, 最终获得first_block& # 39;;使用($ $)符号可以避免引号问题。也可以在美元之间使用标识,如之间使用标识,如之间使用标识,如函数美元,procedureprocedureprocedure。
PL/pgSQL子结构块
PL/pgSQL可以一个块在另一个块的主体中。一个块嵌入在另一个块中称为子块,包含子块的块称为外部块。
子块用于组织语句,这样大块能被分为更小和更多逻辑子块。子块的变量的名称可以与外部块变量名称同名,虽然这在实践中不建议。当在子块中声明一个与外部变量同名的变量,外部变量在子块中被隐藏。如果需要访问外部块的变量,可以使用块标签作为变量的限定符,如下面示例:
DO $ $, & lt; & lt; outer_block>比; 声明 ,counter integer :=, 0; BEGIN ,counter :=, counter +, 1; ,RAISE NOTICE & # 39;从而current value of counter is % & # 39;,,计数器; , ,DECLARE ,counter integer :=, 0; ,BEGIN ,counter :=, counter +, 10; ,RAISE NOTICE & # 39;从而current value of counter 拷贝,subblock is % & # 39;,,计数器; ,RAISE NOTICE & # 39;从而current value of counter 拷贝,outer block is % & # 39;,, outer_block.counter; ,结束; , ,RAISE NOTICE & # 39;从而current value of counter 拷贝,outer block is % & # 39;,,计数器;如何在PostgreSQL数据库中书写匿名块