我正在编写一个很长的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
这是什么存储过程适用于? (我是初学者,试图找出一些东西)
答案 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';