代码之家  ›  专栏  ›  技术社区  ›  Tim unnamed eng

T-SQL如何不清楚地区分过程代码和“纯SQL”?

  •  0
  • Tim unnamed eng  · 技术社区  · 7 年前

    从一个伟大的答复 https://stackoverflow.com/a/50859647/156458

    唯一的DBMS产品 程序代码和“普通SQL”之间没有明确区分 SQL Server:t-SQL是SQL语言的扩展,它允许您 混合使用“常规SQL”和过程SQL,而不告诉后端运行代码需要不同的引擎 (这是伟大的源泉 对于从SQL Server迁移到Postgres或Oracle的人来说是一种困惑 )。

    我想知道T-SQL如何不清楚地区分过程代码和“普通SQL”?

    这如何给PostgreSQL用户带来混乱?

    谢谢。

    1 回复  |  直到 7 年前
        1
  •  2
  •   a_horse_with_no_name    7 年前

    我指的是,在SQL Server中,您可以编写:

    declare @some_variable
    
    if exists (select ..) then 
      ... do something
    else 
      ... do something else
    end
    
    ... do more ..
    

    无需“正式”启动Postgres中所需的过程代码块(使用 DO )或Oracle(使用 DECLARE )。变量也可以在代码中使用(同样,与Oracle和Postgres不同,变量可以 只有 使用程序块)

    该代码还允许运行select语句,而不需要将结果存储在某个地方(如Postgres、Oracle、DB2和许多其他DBMS中)。


    我也从未说过它(分离)混淆了Postgres(或Oracle)用户。

    我写过“它让用户感到困惑 正在迁移 SQL服务器 Postgres(或Oracle)。

    对于一个有经验的SQL Server用户来说,SQL和过程语言(pl/pgsql或pl/sql)之间的清晰(有时甚至是令人讨厌的)区别至少是令人惊讶的,如果不是完全令人讨厌的话。我已经看到人们对这一点非常生气(不说P*off),以至于他们声称 这样的数据库是不可用的 他说:“这是一个很好的选择。”