我需要的是发送一个数组
或一些可以包含多个有序数据的东西,这些数据将在存储过程
中读取到,而在
SQL Server
中,唯一的问题是我不知道如何将参数作为数组或表发送。
如果有一种方法不涉及
数组
,但仍然保留将多个数据发送到单个参数的想法,我将不胜感激。
注意:我将使用JDBC将参数从Java发送到SQL服务器
这是我找到的最好的解决方案(感谢用户2067753):(以下内容来自这里)
让我们创建一个Person表,它有一个ID和Name列。
CREATE TABLE Person(
ID INT IDENTITY(1,1) NOT NULL,
Name VARCHAR(200) NOT NULL
CONSTRAINT PK_Person PRIMARY KEY CLUSTERED (ID ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
我们必须创建表值函数,它将逗号分隔的字符串拆分为表
在进入本文之前,我建议您阅读以下MSDN主题
创建函数“SplitDelimiterString”,该函数将使用分隔符拆分字符串。
CREATE FUNCTION SplitDelimiterString (@StringWithDelimiter VARCHAR(8000), @Delimiter VARCHAR(8))
RETURNS @ItemTable TABLE (Item VARCHAR(8000))
AS
BEGIN
DECLARE @StartingPosition INT;
DECLARE @ItemInString VARCHAR(8000);
SELECT @StartingPosition = 1;
--Return if string is null or empty
IF LEN(@StringWithDelimiter) = 0 OR @StringWithDelimiter IS NULL RETURN;
WHILE @StartingPosition > 0
BEGIN
--Get starting index of delimiter .. If string
--doesn't contain any delimiter than it will returl 0
SET @StartingPosition = CHARINDEX(@Delimiter,@StringWithDelimiter);
--Get item from string
IF @StartingPosition > 0
SET @ItemInString = SUBSTRING(@StringWithDelimiter,0,@StartingPosition)
ELSE
SET @ItemInString = @StringWithDelimiter;
--If item isn't empty than add to return table
IF( LEN(@ItemInString) > 0)
INSERT INTO @ItemTable(Item) VALUES (@ItemInString);
--Remove inserted item from string
SET @StringWithDelimiter = SUBSTRING(@StringWithDelimiter,@StartingPosition +
LEN(@Delimiter),LEN(@StringWithDelimiter) - @StartingPosition)
--Break loop if string is empty
IF LEN(@StringWithDelimiter) = 0 BREAK;
END
RETURN
END
让我们创建一个存储过程,它将获取Ids字符串并返回针对这些Ids的名称
CREATE PROCEDURE GetPersonsByIds @Ids VARCHAR(8000)
AS
BEGIN
SELECT * FROM Person
WHERE ID IN (SELECT * FROM SplitDelimiterString(@Ids, ','))
END
现在将ID传递给存储过程,让我们看看输出是什么
EXEC GetPersonsByIds '3,7,9'
输出:
ID名称
3阿曼西奥·奥尔特加
7大卫·科赫
9莉莲·贝当古
您可以将其作为逗号分隔的列表发送,并在SQL服务器端将其分解,或者您可以使用XML变量并分解XML数据。
然而,在SQL服务器端,由于可能的性能影响,我将避免使用WHILE循环。相反,一次粉碎并使用数据ll。
美国东部时间2019.05.14下午4:54更新-好的-下面是说明我的问题的代码-可能我花了太长时间才得到这个,而且可能太长了,但我还是Java新手。无论如何——它可以工作,打开窗体,但无法让第二个按钮看到并对“事件”做出反应。我想我现在是在“提高”活动,好吧——至少它在活动中达到了标准。但是,它仍在运行类代码,而不是通过setOnFormStateChange传入的“自定义”代码????我不确定
问题内容: 我想将数组作为参数传递给SqlQuerySpec,以便在构建对天蓝色的db数据库的查询时可以在IN表达式中使用它。我想做的是像我们对常规参数(字符串,整数等)所做的事情: 但是,这种方式是行不通的。我还有其他方法可以将数组作为参数传递吗?谢谢。 问题答案: 您的查询应如下所示: 那么您可以将其作为数组传递,并检查该数组是否包含文档中属性中具有的值。 参考: https://docs.m
问题内容: 我知道在php中,我只能用来检索以数组形式发送的GET数据,但是在Python中,可能是因为我只收到一个字符串,却无法识别为数组/列表。 如果需要的话,我会用flask/werkzeug。 问题答案: 参数名称的深度解析对于PHP AFAIK是唯一的。 如果你只需要一个简单的列表,只需传递几个具有相同名称的参数并使用(documentation)。 否则,你必须自己解析查询字符串。
问题内容: 我的jphp.php文件包含以下内容: 并且我的javascript文件包含以下内容: 我已经用php编码了数据数据..现在我想将这两个数据数组发送到javascript …我不知道要使用的正确命令。我对谷歌搜索感到困惑。 请帮忙 。 问题答案: 使用jQuery的简单特定示例: JavaScript页面: 在您的php中:
我正在使用标准的谷歌分析片段在页面发送信息到谷歌分析。 由于各种原因,我的页面是通过查询参数到达的。 在一个理想的世界,这不会是情况,但这不是一个完美的世界,所以我必须避免它发送到谷歌分析,因为它包含个人信息。 我一直在手动向url添加一个查询参数,并使用ObservePoint检查内容。内容信息包含“http://localhost/my/URL/page?uiop=qwert”得文档位置URL
我正在努力想办法让这个工作。我想如果我发送一个数组作为另一个函数的参数,我就可以清除它,但是每次我都从它发送到的函数中得到错误。我试图过滤两个充满坐标{x:, y:}的2D数组。一切都运行良好,除了我不能清除后,每次我把它传递给我的函数。如果我试图清除它,我会从我的函数中得到错误。 我不指望它会像我想的那样,一旦它作为一个论点被发送出去,它就不再重要了。我还尝试了以多种方式创建副本,但无论如何,通