使用变量和参数
Transact-SQL 在其语句间传递数据有几种方式。其中有: Transact-SQL 局部变量: 
Transact-SQL 变量是 Transact-SQL 批处理和脚本中能够保存数据值的对象。声明或定义变量后,批处理中的一个 Transact-SQL 语句可以设置变量值,而该批处理中后面的语句可以从变量获得此值。例如:DECLARE @EmpIDVar INTSET @EmpIDVar = 1234SELECT *
FROM Employees
WHERE EmployeeID = @EmpIDVarTransact-SQL 参数: 
参数是在存储过程和执行该存储过程的批处理或脚本之间传递数据的对象。参数可以是输入参数也可以是输出参数。例如:CREATE PROCEDURE ParmSample @EmpIDParm INT AS
SELECT *
FROM Employees
WHERE EmployeeID = @EmpIDParm
GOEXEC ParmSample @EmpIDParm = 1234
GO应用程序使用应用程序变量和参数标记来处理 Transact-SQL 语句中的数据。 应用程序变量 
应用程序编程语言如 C、C++、Basic 和 Java 都有它们自己保存数据的变量。使用数据库 API 的应用程序必须在使用数据之前将由 Transact-SQL 语句返回的数据移动到应用程序变量中。该操作通常通过称为绑定的进程来完成。应用程序使用 API 函数将结果集列绑定到程序变量。提取行时,API 提供程序或驱动程序将数据从列移动到绑定程序变量。参数标记 
ADO、OLE DB 和基于 ODBC 的数据库 API 支持参数标记。参数标记是放置在 Transact-SQL 语句中输入表达式位置的一个问号 (?)。该参数标记随后可绑定到应用程序变量。从而使应用程序变量的数据能够用作 Transact-SQL 语句的输入。参数标记也允许存储过程输出参数和返回代码绑定到应用程序变量。执行此过程后输出数据将返回到绑定变量。DB-Library API 也支持将存储过程参数和返回代码绑定到程序变量。

解决方案 »

  1.   

    使用 OUTPUT 参数返回数据
    如果在过程定义中为参数指定 OUTPUT 关键字,则存储过程在退出时可将该参数的当前值返回至调用程序。若要用变量保存参数值以便在调用程序中使用,则调用程序必须在执行存储过程时使用 OUTPUT 关键字。示例
    下列示例显示有一个输入参数和一个输出参数的存储过程。存储过程中的第一个参数 @title 将接收由调用程序指定的输入值,而第二个参数 @ytd_sales 将向调用程序返回该值。SELECT 语句使用 @title 参数以获得正确的 ytd_sales 值,并将该值赋予 @ytd_sales 输出参数。CREATE PROCEDURE get_sales_for_title
    @title varchar(80),   -- This is the input parameter.
    @ytd_sales int OUTPUT -- This is the output parameter.
    AS  -- Get the sales for the specified title and 
    -- assign it to the output parameter.
    SELECT @ytd_sales = ytd_sales
    FROM titles
    WHERE title = @titleRETURN
    GO 下列程序用输入参数值执行存储过程,并将存储过程的输出值保存到调用程序的局部变量 @ytd_sales_for_title 中。-- Declare the variable to receive the output value of the procedure.
    DECLARE @ytd_sales_for_title int-- Execute the procedure with a title_id value
    -- and save the output value in a variable.EXECUTE get_sales_for_title
    "Sushi, Anyone?", @ytd_sales = @ytd_sales_for_title OUTPUT -- Display the value returned by the procedure.
    PRINT 'Sales for "Sushi, Anyone?": ' +    convert(varchar(6),@ytd_sales_for_title)
    GOSales for "Sushi, Anyone?": 4095执行存储过程时,也可为 OUTPUT 参数指定输入值。这样将允许存储过程从调用程序中接收一个值,更改该值或对该值执行操作,然后将新值返回至调用程序。在前面的示例中,可在执行存储过程前将一个值赋予 @ytd_sales_for_title 变量。@ytd_sales 变量在存储过程主体中包含参数值,而该存储过程在退出时,将 @ytd_sales 变量值返回至调用程序。这常常被称作"传址调用功能"。安全说明  验证所有用户输入。验证之前,不要串联用户输入。绝对不要执行根据尚未验证的用户输入构造的命令。有关更多信息,请参见验证用户输入。
    如果在执行存储过程时对参数指定 OUTPUT,而在存储过程中该参数又不是用 OUTPUT 定义的,那么将收到一条错误信息。在执行带有 OUTPUT 参数的存储过程时,可以不指定 OUTPUT。这样不会返回错误,但将无法在调用程序中使用该输出值。
      

  2.   

    主贴还不能修改...我的意思是,比如说:我update一个人的工资,那么如果我想在我的update触发器里把这个人的字段都显示出来或者是做别的操作,那么我怎么样来确定是那条记录被update了呢?谢谢各位大大
      

  3.   

    你可以这样做:
    create trigger update1
    on table1
    for update 
    as 
    if update(column)
    print'该字段已被修改'
    select column from table1这个效果可以吗,试一下吧