CREATE PROCEDURE Testing1
@Varaible nvarchar(50),
@value integer
AS
BEGIN
DECLARE @SUMM FLOAT
SET @SUMM=(@value*2.38/7.456)*2
PRINT @Varaible
PRINT 'EXPENSES IS'
PRINT @SUMM
END
Output is:
PETER
EXPENSES IS
24.2597
上面是我的代码,我在其中传递单个输入参数。
如果我想传递多个值,例如 peter,robber,licoln,mat
@varaible 彼得,强盗,licoln,mat
@value 37 45 66 77
SQL 中可能吗?
最佳答案
如果您仅在分隔字符串中发送几个值,我建议您仅使用正确的数据类型并使用各个值调用存储过程几次。
但是,如果您的分隔字符串可能包含数百或数千个离散值,那么多次调用过程可能在性能方面代价高昂,特别是如果您无法一次性发送所有这些值(我是确保您想要使用参数而不是巨大的串联命令)。如果是这种情况,您有以下几种选择:
- 使用Table Valued Parameters 。这就像将数组作为参数传递给您的过程。
- Pass XML to your proc ,然后在程序中粉碎并处理。
- 将数据插入临时表/临时表,然后调用过程对这些表进行操作。
- 退后一步,看看在您的应用中进行更多处理是否有意义。数据库代码的扩展性通常不如应用代码。
- 将这些分隔字符串发送到您的进程,split/parse them ,然后在 SQL 中循环结果。这似乎就是您要问的问题,并且可能是最不优雅的选择,尽管它是滥用关系数据库的更流行的方法之一。
关于sql - 单个变量由存储过程中的字符数组成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18790021/