【问题标题】:Are BEGIN/END needed in SQL script?SQL 脚本中是否需要 BEGIN/END?
【发布时间】:2012-05-12 04:19:37
【问题描述】:

SQL 脚本中是否需要 BEGIN/END(一般情况下)或者可以用 { 和 } 替换它们

例子:

IF DB_ID('comics') IS NOT NULL        
    BEGIN
        PRINT 'Database exists - dropping the comics database.';
        DROP DATABASE comics;
    END

VS

IF DB_ID('comics') IS NOT NULL        
{
    PRINT 'Database exists - dropping the comics database.';
    DROP DATABASE comics;
}

我正在使用 MS SQL Server 2008 R2

【问题讨论】:

  • 您使用的是什么数据库?需要什么取决于 DBMS(它们之间的语法不同)。
  • DB_ID 是 TSQL
  • 我已经更新了我的问题。很抱歉造成混乱。
  • 自己测试一下,看看;)

标签: sql tsql syntax sql-server-2008-r2


【解决方案1】:

IF...ELSE 的文档显示:

IF Boolean_expression 
     { sql_statement | statement_block } 
[ ELSE 
     { sql_statement | statement_block } ] 

但是,Transact-SQL Syntax Conventions (Transact-SQL) 页面显示:

{ } (braces)    Required syntax items. Do not type the braces.

因此,大括号不是您可以在代码中输入的东西,而只是表明在 IF 语句中确实需要 一个 sql_statementstatement_block . (当然,一个statement_block可以包含多个sql_statements,只要你在它们周围使用BEGINEND。)

【讨论】:

    【解决方案2】:

    您应该将BEGIN...END 用于语句块。 Source

    【讨论】:

      【解决方案3】:

      从未听说过 SQL 中的 {}。 SQL 92 规范使用 BEGIN END。 我认为 BEGIN END 是唯一的选择。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-12-04
        • 1970-01-01
        • 2019-05-18
        • 1970-01-01
        • 2011-10-16
        • 2011-02-15
        • 2020-10-14
        相关资源
        最近更新 更多