如何在PostgreSQL数据库中书写匿名块

  介绍

如何在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数据库中书写匿名块

注意做语句不属于块结构。它用于执行匿名块.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可以一个块在另一个块的主体中。一个块嵌入在另一个块中称为子块,包含子块的块称为外部块。

如何在PostgreSQL数据库中书写匿名块

子块用于组织语句,这样大块能被分为更小和更多逻辑子块。子块的变量的名称可以与外部块变量名称同名,虽然这在实践中不建议。当在子块中声明一个与外部变量同名的变量,外部变量在子块中被隐藏。如果需要访问外部块的变量,可以使用块标签作为变量的限定符,如下面示例:

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数据库中书写匿名块