如何提示SQL查询用户输入信息

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的值?除了我只是让评论线告诉他们这样做?

Gio*_*uri 8

如果你不能做一个应用程序,你没有开发人员等等,你有一种方法 - 制作存储过程:

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)

至少你会确定没有用户偶尔可以破坏某些东西......如果你不为存储过程的参数提供值,它将提示你这样做,除非你没有这些参数的默认值.在我看来,这似乎是你的案例的最佳解决方案.

  • 如果您指示用户右键单击存储过程并单击“执行存储过程...”,则系统将通过一个漂亮的 GUI 窗口提示用户查看并输入存储过程所需的所有参数。/sf/answers/3647498641/ (2认同)