Vba*_*now 6 sql-server variables prompt command-prompt
我在SQL服务器中编写的查询主要由不了解SQL的人运行,并且每次运行查询时都有两个区域必须输入不同的字符串或日期.到目前为止,我只是编写它,以便您在查询顶部输入信息并将其存储为变量.有没有办法让我可以让SQL提示运行查询的人输入数据?下面是我正在谈论的代码的摘录.
declare
/*ENTER ACCOUNTING MONTH*/
@amon VARCHAR(2) = '05',
/*ENTER INVOICE DATE IN MM/DD/YYYY FORMAT*/
@invdate DATE = '05/31/2015'
~~
rest of the code
~~
declare @sumA numeric(25, 5), @sumB numeric(25, 5), @ratio numeric(25, 5)
select @sumA = sum(amnt) from accnt where accno = '1152'
select @sumB = sum(amnt) from acc1152
update acc1152 set amnt = amnt * (@sumA/@sumB),
amon = @amon,
invdate = @invdate,
ven = '1152',
code = '1152',
invno = 'INVENTORY'
Run Code Online (Sandbox Code Playgroud)
那么SQL是否可以提示用户输入@amon和@invate的值?除了我只是让评论线告诉他们这样做?
如果你不能做一个应用程序,你没有开发人员等等,你有一种方法 - 制作存储过程:
create stored procedure spDoSomeJob
@amon VARCHAR(2),
@invdate DATE
as
begin
~~
rest of the code
~~
declare @sumA numeric(25, 5), @sumB numeric(25, 5), @ratio numeric(25, 5)
select @sumA = sum(amnt) from accnt where accno = '1152'
select @sumB = sum(amnt) from acc1152
update acc1152 set amnt = amnt * (@sumA/@sumB),
amon = @amon,
invdate = @invdate,
ven = '1152',
code = '1152',
invno = 'INVENTORY'
end
Run Code Online (Sandbox Code Playgroud)
除了运行此过程之外,拒绝用户的任何活动权限.执行它像:
exec spDoSomeJob @amon = '05', @invdate = '05/31/2015'
Run Code Online (Sandbox Code Playgroud)
至少你会确定没有用户偶尔可以破坏某些东西......如果你不为存储过程的参数提供值,它将提示你这样做,除非你没有这些参数的默认值.在我看来,这似乎是你的案例的最佳解决方案.
| 归档时间: |
|
| 查看次数: |
52826 次 |
| 最近记录: |