常用查询的存储过程?
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';
我正在编写一个很长的 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';