经常使用的查询的存储过程?

时间:2015-03-13 12:09:40

标签: sql-server stored-procedures

我正在编写一个很长的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

这是什么存储过程适用于? (我是初学者,试图找出一些东西)

2 个答案:

答案 0 :(得分:5)

你的想法是正确的,而且你的代码很接近。

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的好地方 - 桌子和SP必须有不同的名称,上面的代码相应调整。

答案 1 :(得分:2)

将其声明为存储过程并将调用放在脚本中:

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';