如何从T-SQL中的用户获取输入值?

时间:2009-04-07 09:27:10

标签: sql sql-server tsql

我想知道如何从T-SQL中的用户那里获取输入。

例如,我如何从用户处获取两个数字的程序并将它们一起添加?

4 个答案:

答案 0 :(得分:3)

有许多方法可以构建可以接受用户输入的UI。这可能是另一个问题的主题。

正如其他评论者所指出的,在考虑直接接受用户输入的安全风险时,在应用程序的多个层清理数据至关重要。这表示所有数据驱动的应用程序必须接受用户数据并对其采取行这并非不可能,您必须充分了解风险,这一点非常重要。接受用户数据并在其上执行的潜在问题是,恶意用户有可能尝试在数据库上执行自己的代码并删除表,提取敏感数据或其他令人讨厌的东西。除非整个应用程序位于防火墙之后,否则对于没有重要安全经验的人来说,这不是一项任务。

也就是说,最简单的UI就是让内部和可信用户安装类似SQL Server management studio的东西,然后给他们调用存储过程的.sql脚本。这种技术只是我可以为一个有点技术性的可信用户推荐的东西。

你创建了一个这样的程序:


create procedure AddNumbers
    @augend int,
    @addend int
as
/* 
if all the input that you are accepting is numeric 
it is somewhat safer as long as you use int or numeric datatypes from the start.
I would stay away from using any alphanumeric data in a function like this 
without running it through some validation with a regular expression or other method.
*/
select @augend+@addend

然后指示用户像这样调用它


execute AddNumbers
    @augend = 4,
    @addend = 5

此外,您可以构建一个调用此过程并提供结果的UI。但是你需要仔细调整所需的访问和安全性。

答案 1 :(得分:1)

永远不会这样做。将这两个值作为参数传递给function / sproc(更不用说使用SQL Server作为计算器很奇怪了。)

答案 2 :(得分:1)

有很多选择,包括:

1)创建一个存储过程,该过程接收用户提供给您的值

2)根据用户提供的值动态创建Select语句

实际上,为了正确回答这个问题,您需要向我们提供更多信息,例如:如何从用户那里获取信息,您打算如何查询数据库。

答案 3 :(得分:1)

将用户界面与持久性分离的分层体系结构永远不会这样做。持久性代码永远不应该与用户相近。没有机会以这种方式进行验证。

这个例子可能是人为的,但答案是一样的:不要。