sql - 单个变量由存储过程中的字符数组成?

标签 sql arrays t-sql stored-procedures sql-server-2008-r2

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/

相关文章:

中午开始按小时Sql

sql-server - 计算存储过程结果中的行数,然后将结果插入表中

mysql - 不满足条件时 SELECT 语句应返回 0

sql - Kaminari 在 Postgres 的大表上使用 COUNT(*) 很慢

sql - 如何编写此查询以显示包含其他字段的 COUNT

c - 调整二维数组的大小,并将元素的平均值转移到 c 中较小的矩阵

ruby-on-rails - Rails 4,在 Postgresql 中保存数组

sql - 具有新功能的 Asterisk

ios - 整数数组到范围数组

t-sql - 每行右连接