zoukankan      html  css  js  c++  java
  • SQL 创建存储过程

    CREATE { PROC | PROCEDURE } [schema_name.] procedure_name [ ; number ]
        [ { @parameter [ type_schema_name. ] data_type }
            [ VARYING ] [ = default ] [ OUT | OUTPUT ] [READONLY]
        ] [ ,...n ]
    [ WITH <procedure_option> [ ,...n ] ]
    [ FOR REPLICATION ]
    AS { <sql_statement> [;][ ...n ] | <method_specifier> }
    [;]
    <procedure_option> ::=
        [ ENCRYPTION ]
        [ RECOMPILE ]
        [ EXECUTE AS Clause ]

    <sql_statement> ::=

    <sql_statement> ::=
    { [ BEGIN ] statements [ END ] }

    <method_specifier> ::=
    EXTERNAL NAME assembly_name.class_name.method_name
    @ parameter
    过程中的参数。在 CREATE PROCEDURE 语句中可以声明一个或多个参数。除非定义了参数的默认值或者将参数设置为等于另一个参数,否则用户必须在调用过程时为每个声明的参数提供值。存储过程最多可以有 2,100 个参数。如果过程包含表值参数,并且该参数在调用中缺失,则传入空表默认值。

    通过将 at 符号 (@) 用作第一个字符来指定参数名称。参数名称必须符合有关标识符的规则。每个过程的参数仅用于该过程本身;其他过程中可以使用相同的参数名称。默认情况下,参数只能代替常量表达式,而不能用于代替表名、列名或其他数据库对象的名称。有关详细信息,请参阅 EXECUTE (Transact-SQL)。

    COMMIT TRANSACTION 或 COMMIT WORK 的每个调用都应用于最后执行的 BEGIN TRANSACTION。如果嵌套 BEGIN TRANSACTION 语句,那么 COMMIT 语句只应用于最后一个嵌套的事务,也就是在最内层的事务。即使嵌套事务内部的 COMMIT TRANSACTION transaction_name语句引用外部事务的事务名,该提交也只应用于最内层的事务。

    ROLLBACK TRANSACTION 语句的 transaction_name 参数引用一组命名的嵌套事务的内层事务是非法的,transaction_name 只能引用最外部事务的事务名。如果在一组嵌套事务的任意级别执行使用外部事务名称的 ROLLBACK TRANSACTION transaction_name 语句,那么所有的嵌套事务都将回滚。如果在一组嵌套事务的任意级别执行没有 transaction_name 参数的 ROLLBACK WORK 或 ROLLBACK TRANSACTION 语句,那么它将回滚所有嵌套事务,包括最外部事务。

    @@TRANCOUNT 函数记录当前事务的嵌套级

    每个 BEGIN TRANSACTION 语句使 @@TRANCOUNT 加 1。

    每个 COMMIT TRANSACTION 或 COMMIT WORK 语句使 @@TRANCOUNT 减 1。

    没有事务名的 ROLLBACK WORK 或 ROLLBACK TRANSACTION 语句将回滚所有嵌套事务,并使 @@TRANCOUNT 减小到 0。

    使用一组嵌套事务中最外部事务的事务名称的 ROLLBACK TRANSACTION 将回滚所有嵌套事务,并使 @@TRANCOUNT 减到 0。

    在无法确定是否已经在事务中时,可以用 SELECT @@TRANCOUNT 语句确定 @@TRANCOUNT 是 1 还是更大。如果 @@TRANCOUNT 是 0,则表明不在事务中。

    二、

    返回在当前连接上已发生的 BEGIN TRANSACTION 语句的数目。

    语法:

    @@TRANCOUNT
    返回类型 

    integer


    @@TRANCOUNT - xiao_mege - xiao_mege的博客  注释

    BEGIN TRANSACTION 语句将 @@TRANCOUNT 增加 1。ROLLBACK TRANSACTION 将 @@TRANCOUNT 递减到 0,但 ROLLBACK TRANSACTION savepoint_name 除外,它不影响 @@TRANCOUNT。COMMIT TRANSACTION 或 COMMIT WORK 将 @@TRANCOUNT 递减 1。


    @@TRANCOUNT - xiao_mege - xiao_mege的博客  示例

    A. 演示 BEGIN 和 COMMIT 语句的效果

    下面的示例演示嵌套的
    BEGIN

    COMMIT
    语句对
    @@TRANCOUNT

  • 相关阅读:
    Centos 7安装python3
    R贡献文件中文
    Sublime text 3 注册码激活码 版本号3143
    Create R NoteBook require updated versions of the following packages : knitr,rmarkdown.
    vim 的升级 安装 重装
    使用yum快速升级CentOS 6.5内核到 3.10.28
    Container With Most Water——LeetCode
    Majority Element II——LeetCode
    Summary Ranges —— LeetCode
    Contains Duplicate III —— LeetCode
  • 原文地址:https://www.cnblogs.com/wycoo/p/SQL.html
Copyright © 2011-2022 走看看