0
|
Tim unnamed eng · 技术社区 · 7 年前 |
![]() |
1
3
要澄清术语:
SQL是
查询
用于在关系数据库中选择、更新、删除或创建数据的语言。它没有
procedural elements
类环
因为sql没有过程元素,所以不能混合过程代码和sql代码。如果你想运行程序代码,你需要告诉服务器你正在以某种方式切换“引擎”。这是通过(sql)完成的
这与Oracle中的匿名pl/sql块相同
唯一没有明确区分过程代码和“普通sql”的dbms产品是sql server:t-sql是sql语言的扩展,它允许您混合使用“普通sql”和过程sql,而不需要告诉后端代码需要另一个引擎来运行(它是对于从sql server迁移到postgres或oracle的人来说,这是一个巨大的困惑。 sql/psm是一个标准,它定义了可以嵌入到使用sql作为查询语言的数据库引擎中的过程元素。我知道没有一个dbms产品真正实现了sql/psm。postgres的pl/pgsql、oracle的pl/sql、mysql的过程性方言与之有些相似,但与sql/psm标准相去甚远。我认为最接近sql/psm标准的是db2,也许 HSQLDB
这是真的。但是, 不 dbms完全实现了sql标准,但是postgres的实现可能是最接近标准的。 |
![]() |
2
1
sql是一种查询语言,而pl/pgsql是一种过程语言(它有如下语句
过程语言用于编写函数;函数体可以用pl/pgsql编写。
sql/psm是定义存储过程语言的标准的一部分,因此sql/psm适用于pl/pgsql,但不适用于sql。 但是,pl/pgsql不遵循sql/psm标准。 没有人告诉您必须使用pl/pgsql,事实上,不使用它会使您的应用程序更具可移植性(在数据库端)。但是sql和过程语言是不同的(在postgresql和mysql中),您可能会发现两者都有其用途。 |
|
Johnny T · 基于当前值的SQL合并表[重复] 4 月前 |
![]() |
John D · 需要为NULL或NOT NULL的WHERE子句 4 月前 |
![]() |
ojek · 如何对SQL结果进行分组和编号? 4 月前 |
![]() |
senek · 如何在PL/SQL中将选择结果(列)放入数组中 4 月前 |
![]() |
Sax · 规范化Google表格(第一步) 4 月前 |
![]() |
Jatin · 检索卷计数的动态sql抛出错误语法错误[关闭] 4 月前 |
![]() |
Andrus · 如何在sql中查找第二个匹配项 4 月前 |