如何在postgresql中使用psql实现这些代码?
Declare @Id int
Set @Id = 1
While @Id <= 100
Begin
Insert Into tblAuthors values ('Author - ' + CAST(@Id as nvarchar(10)),
'Country - ' + CAST(@Id as nvarchar(10)) + ' name')
Print @Id
Set @Id = @Id + 1
End
我试着搜索一些postgresql语法的教程,但是没有一个有用。
2条答案
按热度按时间58wvjzkj1#
不需要PL/pgSQL、循环或变量:
irtuqstp2#
@a_horse_with_no_name的答案是正确的,只需要一个插入。然而,你的问题似乎更多的是关于语法而不是如何完成。所以让我们回顾一下;将代码转换为Postgres所需的一些观察。
1.该语言是
plpgsql
而不是psql
。在Psql
命令行界面应用程序进入Postgresql
数据库管理系统。@
不是对象名称中的有效字符。1.声明变量需要指定数据类型。
Set
不用于变量赋值。如果使用它,则会建立/更改运行时环境1.变量初始化可以在定义变量时进行。
1.没有
nvarchar
数据类型。只使用text
。1.没有
Print
语句。请改用raise notice
。+
不用于字符串连接。请使用函数concat()
或运算符(||
)。1.每个语句必须以分号(
;
)结束。1.循环由
loop ... end loop;
封闭1.除了声明之外的所有语句都必须包含在
begin ... end;
中。1.整个代码块必须用单引号或美元引用的字符串常量括起来。
1.所有代码块必须位于Function、Procedure、Do块或其他代码块中。
1.虽然不是必需的,但最好总是在插入时指定列名。(恕我直言,应该是必需的)。
考虑到上面的代码,您的代码变为:
与其 * 搜索一些教程 *,不如从Documentation开始。更具体地说,也许是Lexical Structure一章
注意:上面的#2并不完全正确。如果变量名用双引号括起来,可以使用
@
作为"@name"
。但是,双引号很快就会成为一个可读文件,最好完全避免。