如何在过程

时间:2017-07-21 10:37:56

标签: sql-server tsql stored-procedures

我们说我有这个程序

ALTER PROCEDURE CallsChange
    @ID int,
    @CS int
AS
BEGIN
    SET NOCOUNT ON;

    INSERT INTO [ctlCalls] ([InsertDate])
    VALUES (GETDATE())

    UPDATE [ctlOrders]
    SET [DeliverymanID] = NULL,
        [CallId] = (SELECT SCOPE_IDENTITY()),
        [CurrentStatus] = 1
    WHERE ID = @ID 
END

我想知道的是:如果有一个SQL Server变量返回值,如果更新后某些内容在数据库中发生了变化?换句话说:如果已成功运行更新

3 个答案:

答案 0 :(得分:0)

您可以使用Print语句来检查命令是否已在过程中成功执行..

<强> EX:

create proc usp_test
as
begin

insert into t1
select 2

Print 'Insert completed'

update t
set id=1

print 'update completed'

end

答案 1 :(得分:0)

  1. 您可以使用上述答案中提到的存储过程中的print语句。
  2. 每当执行存储过程时,消息框将显示已更新的行数。 3。由于您使用范围标识进行更新,因此将始终使用新值更新表。它没有更新,您可以使用INSERTED或DELETED表格检入触发器

答案 2 :(得分:0)

试试这个:

ALTER PROCEDURE CallsChange
    @ID int,
    @CS int,
    @Output varchar(10) = '' OUTPUT
AS
BEGIN
    SET NOCOUNT ON;

    INSERT INTO [ctlCalls] ([InsertDate])
    VALUES (GETDATE())

    UPDATE [ctlOrders]
    SET [DeliverymanID] = NULL,
        [CallId] = (SELECT SCOPE_IDENTITY()),
        [CurrentStatus] = 1
    WHERE ID = @ID 
   SET @Output = @@ROWCOUNT       
   SELECT  'Updated ' + @Output + ' records'
END