常用查询的存储过程?

Stored procedure for often-used query?

我正在编写一个很长的 QC 脚本,用于在导入后检查数据。在脚本中的每一步之后,我想将结果写入审计日志:

insert into [AUDIT_LOG] (finished, query, result) 
values (getdate(), 'Create QC table', 'Table Created');

我在整个脚本中使用此查询超过 100 次。有没有办法缩短这个?像

audit_log('Create QC table', 'Table Created');

所以自定义函数看起来像(伪)

begin function audit_log(@query, @result)
  insert into [AUDIT_LOG] (finished, query, result) 
  values (getdate(), @query, @result);
end

这是存储过程的用途吗? (我是一个试图弄清楚一些东西的初学者)

你的想法是对的,你的代码也很接近。

create proc dbo.make_audit_log(@query varchar(100), @result varchar(100)) as
    insert into [AUDIT_LOG] (finished, query, result) 
       values (getdate(), @query, @result);
go

然后使用这个

exec dbo.make_audit_log 'your query', 'your result'.

编辑:@IvanGerasimenko 的好地方 - table 和 SP 必须有不同的名称,上面的代码相应地进行了调整。

将其声明为存储过程并将对它的调用置于您的脚本中:

CREATE PROCEDURE [dbo].[SaveAuditLog]
    @query NVARCHAR(255)
    ,@result NVARCHAR(255)
AS
BEGIN
    SET NOCOUNT ON;

    INSERT INTO [dbo].[AUDIT_LOG] (finished, query, result) 
    VALUES (GETDATE(), @query, @result);
END
GO

--calling

EXEC [dbo].[SaveAuditLog] @query = 'some query', @result = 'some result';