Postgresql存储过程的示例

723 阅读5分钟

Postgresql数据库比其他数据库更可靠,因为它可以以关系、程序等形式创建和存储数据。Postgresql是一个可定制的数据库,因为我们可以根据自己的要求修改存储容器。Postgresql中的数据是由模式和目录管理的。Postgresql支持多种语言,这意味着我们可以在psql(shell)或pgAdmin端执行任何编程语言的查询。

就像临时表一样,我们也使用其他一些功能来涉及存储容量。这些被称为 "存储程序"。这些程序不像表那样被显示出来。但是,它与表一样默默地工作。

在Postgresql或其他数据库管理系统中,我们使用函数来执行对数据的操作。这些函数是用户创建的或用户定义的。这些函数的一个主要缺点是,我们无法在函数中执行事务。我们不能提交或回滚。这就是我们使用存储过程的原因。通过使用这些存储过程,应用程序的性能得到了提高。此外,我们可以在一个存储过程中使用一个以上的SQL语句。有三种类型的参数。

IN:这是输入参数。它用于将程序中的数据插入到表中。

OUT:是输出参数。它是输出参数。它用于返回值。

INOUT:它同时代表输入和输出参数。因为它们可以传递和返回值。

语法

CREATE OR REPLACE PROCEDURE procedure-name (parameters-list)  

LANGUAGE plpgsql  

AS  $$  

DECLARE  

(variable names of procedure)

BEGIN  

    --- SQL statements / logic /condition.  
   
END  $$

在你的系统中安装Postgresql。配置成功后,我们现在可以访问数据库了。我们有两个选择来应用查询。一个是psql shell,另一个是pgAdmin dashboard。我们使用pgAdmin来实现这一目的。打开仪表板,现在提供密码以保持与服务器的连接。

存储过程的创建

为了理解存储过程的工作,我们需要使用创建语句来创建一个关系。

>> create table clothes ( id serial, name varchar(100), city varchar(100), color varchar(100), price integer);

通常,我们通过使用 "插入 "语句在表中输入数值,但在这里我们使用一个存储过程,它将作为临时表使用。首先,数据将被存储在其中,然后它们将进一步转移表中的数据。

创建一个名为 "Addclothes "的存储过程。这个存储过程将充当查询和表之间的媒介。因为所有的值都是先插入到这个存储过程中,然后通过插入命令直接插入到表中。

>> Create OR REPLACE PROCEDURE Addclothes (c_ID INOUT INT, C_Name varchar(100),c_city varchar(100),c_color varchar(100),c_price integer)

LANGUAGE plpgsql AS

$$ BEGIN

INSERT INTO clothes (Name, city,color,Price ) Values (c_Name, c_city, c_color, c_price ) RETURNING  ID INTO c_ID;

END $$;

现在,存储过程中的值被输入到表衣中。从查询中可以看出,首先,我们定义了存储过程,其属性是数据类型相同但列名略有不同。然后,使用插入语句,将存储过程中的值输入到表中。

就像一个简单的函数,我们使用一个函数调用来发送参数中的值,以便存储过程接受这些值。

>> CALL Addclothes (null, ‘T-shirt’, ‘red’, ‘New York’, 1500);

由于存储过程的名称是 "Addclothes",所以它的写法与我们在插入语句中直接写值的方式相同。输出结果显示为1;由于我们使用了返回方法,这表明有一行被填充。我们将看到通过使用select语句插入的数据。

>> select * from clothes;

重复上述过程,直到你想输入的数值为止。

存储过程和 "UPDATE "子句

现在创建一个过程来更新表 "衣服 "中已经存在的数据。在向存储过程输入数值时,查询的第一部分是一样的。

$$ BEGIN

UPDATE clothes SET Name = c_name, city = c_city, color =c_color, price = c_price WHERE ID = c_ID;

END $$

现在我们将调用这个存储过程。调用的语法是一样的,因为它只使用参数中的值作为参数。

会显示一条信息,表明查询已经成功执行,并注明执行时间。使用select语句获取所有记录,查看被替换的值。

带有 "DELETE "子句的存储过程

我们将在这里使用的下一个存储过程是 "deleteclothes"。这个存储过程将只获取id作为输入,然后用变量来匹配id和表中的id。当找到匹配时,该行将被分别删除。

>> CREATE OR REPLACE PROCEDURE Deleteclothes

(c_ID INT

)

LANGUAGE plpgsql AS

$$ BEGIN

DELETE from clothes WHERE ID =c_Id;

END $$

现在我们将调用这个存储过程。这一次只使用了一个ID。这个ID将定位到要删除的行。

>> call Deleteclothes(2)

ID为 "2 "的行将被从表中删除。

>> select * from clothes;

表中有3条记录。现在你可以看到只剩下两行了,因为id为 "2 "的行已从表中删除。

创建函数

在对存储过程进行了完整的讨论之后,我们现在将考虑如何引入和使用用户定义的函数。

>> CREATE OR REPLACE FUNCTION GetAllclothes() RETURNS clotes

LANGUAGE SQL

AS $$

SELECT * FROM clothes;

$$;
  

我们创建了一个与存储过程同名的函数。表 "clothes "中的所有数据将显示在结果数据输出部分。这个返回函数在参数中不接受任何参数。通过使用这个函数,我们得到了如上图所示的数据。

另一个函数是用来从特定的ID中获取衣服数据的。在参数中引入了一个整数的变量。这个id将与表中的id进行匹配。在找到匹配的地方,会显示具体的行。

>> CREATE OR REPLACE FUNCTION GetclothesById(c_ID INT) RETURNS clothes

LANGUAGE SQL

AS $$

SELECT * FROM clothes WHERE ID = c_ID;

$$;

作为一个参数,我们将调用具有我们希望从表中获取记录的ID的函数。

>> select * from FerclothesById(3);

因此,从输出结果来看,你可以看到从表 "clothes "中只获取了一条记录。

总结

"Postgresql存储过程示例 "详细介绍了存储过程的创建和操作的例子。函数有一个缺点,被Postgresql的存储过程所消除。阐述了关于程序和函数的例子,这些例子足以让我们获得关于程序的知识。