如何从T-SQL中的用户获取输入值?
我想知道如何在T-SQL中获取用户的输入如何从T-SQL中的用户获取输入值?,sql,sql-server,tsql,Sql,Sql Server,Tsql,我想知道如何在T-SQL中获取用户的输入 例如,我该如何做一个程序,从用户那里获取两个数字并将它们相加?永远不要这样做。将这两个值作为参数传递给function/sproc(更不用说使用SQL Server作为计算器了)。永远不要这样做。将这两个值作为参数传递给function/sproc(更不用说将SQL Server用作计算器了)。有许多选项,包括: 1) 创建一个存储过程,该过程接受用户提供给您的值 2) 根据用户提供的值动态创建Select语句 实际上,要正确回答此问题,您需要向我们提供
例如,我该如何做一个程序,从用户那里获取两个数字并将它们相加?永远不要这样做。将这两个值作为参数传递给function/sproc(更不用说使用SQL Server作为计算器了)。永远不要这样做。将这两个值作为参数传递给function/sproc(更不用说将SQL Server用作计算器了)。有许多选项,包括: 1) 创建一个存储过程,该过程接受用户提供给您的值 2) 根据用户提供的值动态创建Select语句
实际上,要正确回答此问题,您需要向我们提供更多信息,例如,您将如何从用户处获取信息,您打算如何查询数据库。有许多选项,包括: 1) 创建一个存储过程,该过程接受用户提供给您的值 2) 根据用户提供的值动态创建Select语句
实际上,要正确回答这一问题,您需要向我们提供更多信息,例如,您将如何从用户处获取信息,您打算如何查询数据库。将用户界面与持久性分离的分层体系结构永远无法做到这一点。持久性代码永远不应该离用户那么近。这样做是不可能的
这个例子可能是人为的,但答案是一样的:不要这样做。将用户界面与持久性分离的分层体系结构永远不会做到这一点。持久性代码永远不应该离用户那么近。这样做是不可能的
这个例子可能是人为设计的,但答案是一样的:不要这样做。有很多方法可以构建一个可以接受用户输入的UI。这可能是另一个问题的主题 <> P>其他评论者注意到,在直接接受用户输入时要考虑安全风险,在应用程序的多个层次上对数据进行清理是至关重要的。也就是说,所有数据驱动的应用程序都必须接受用户数据并对其进行操作。这并非不可能,重要的是你要充分了解风险。接受用户数据并在其上执行的潜在问题是,恶意用户有可能试图在您的数据库上执行自己的代码并删除表、提取敏感数据或其他令人讨厌的东西。除非整个应用程序都在一个coprorate防火墙后面,否则这对于没有重要安全经验的任何人来说都不是一项任务 这就是说,最简单的UI是让内部的可信用户安装SQLServerManagementStudio之类的东西,然后为他们提供调用存储过程的.SQL脚本。这种技术是我唯一可以推荐给信任的用户的技术 您可以创建如下过程:
然后指示用户这样调用它
此外,还可以构建一个UI来调用此过程并给出结果。但是,您需要仔细调节所需的访问和安全性。有很多方法可以构建一个可以接受用户输入的UI。这可能是另一个问题的主题 <> P>其他评论者注意到,在直接接受用户输入时要考虑安全风险,在应用程序的多个层次上对数据进行清理是至关重要的。也就是说,所有数据驱动的应用程序都必须接受用户数据并对其进行操作。这并非不可能,重要的是你要充分了解风险。接受用户数据并在其上执行的潜在问题是,恶意用户有可能试图在您的数据库上执行自己的代码并删除表、提取敏感数据或其他令人讨厌的东西。除非整个应用程序都在一个coprorate防火墙后面,否则这对于没有重要安全经验的任何人来说都不是一项任务 这就是说,最简单的UI是让内部的可信用户安装SQLServerManagementStudio之类的东西,然后为他们提供调用存储过程的.SQL脚本。这种技术是我唯一可以推荐给信任的用户的技术 您可以创建如下过程:
然后指示用户这样调用它
此外,还可以构建一个UI来调用此过程并给出结果。但是,您需要仔细调节所需的访问和安全性。我认为“a+b”是人们可以使用的建议示例,而不是他实际想做的事情。我认为“a+b”是人们可以使用的建议示例,而不是他实际想做的事情。
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