当前位置: 首页 > 面试题库 >

如何将值的数组参数输入到Firebird存储过程?

钱均
2023-03-14
问题内容

我想将ID的 数组参数 输入到 Firebird存储过程

:INPUT_LIST_ID = [1、2、12、45、75、45]

我需要执行以下SQL命令:

SELECT *
FROM CITY
WHERE ID_CITY IN (:INPUT_LIST_ID)

是否有可能?谢谢!


问题答案:

您还可以使用如下所示的内容:

SELECT *
FROM CITY
WHERE ID_CITY IN (SELECT ID FROM GetIntegerList('1, 2, 12, 45, 75, 45'))

您将必须创建一个名为“ GetIntegerList”的新Firebird过程,该过程类似于以下内容:

CREATE OR ALTER PROCEDURE "GETINTEGERLIST"("AINTEGERLIST" VARCHAR(32000))
returns (
  ID integer
)
as
  declare variable IntegerList varchar(32000);
  declare variable CommaPos integer;
  declare variable IntegerVal varchar(10);
begin
  IntegerList = AIntegerList || ' ';
  CommaPos = Position(',', IntegerList);

  while (CommaPos > 0) do
  begin
    IntegerVal = Trim(SubString(IntegerList from 1 for CommaPos - 1));

    if (Char_Length(IntegerVal) > 0) then
    begin
      if (IntegerVal similar to '[0-9]*') then
      begin
        ID = Cast(IntegerVal as integer);
        suspend;
      end
    end

    if (Char_Length(IntegerList) > CommaPos) then
      IntegerList = SubString(IntegerList from CommaPos + 1);
    else
      IntegerList = '';

    CommaPos = Position(',', IntegerList);
  end

  IntegerList = Trim(IntegerList);

  if (Char_Length(IntegerList) > 0) then
  begin
    if (IntegerList similar to '[0-9]*') then
    begin
      ID = Cast(IntegerList as integer);
      suspend;
    end
  end
end

注意,这是在Firebird 2.5.2中完成的。



 类似资料:
  • 我正在尝试创建一个Azure Function(. NET核心)以从存储帐户检索SaS,并且难以理解为什么我无法访问存储。 函数签名: 索引方法“GetBlobSaS”Microsoft时出错。蔚蓝色的网络作业。主机:无法将参数“storage”绑定到类型StorageAccount。确保绑定支持参数类型。如果您使用的是绑定扩展(例如Azure Storage、ServiceBus、Timers等

  • 我不知道用户会输入多少个数字,并且我需要程序在到达行尾时停止在数组中插入数字,因为在新行中用户会输入一个与此无关的数字。 例如: 用户可以输入: 1 5 7 8 9 5 4 或: 5 4 8 9 4 2 1 3 2 4 7 我需要的数组是,示例1:[1,5,7,8,9,5]

  • 问题内容: 我有一个来自此(google book )的mysql存储过程,一个例子是这样的: 该程序编译正常。(我在ubuntu中使用MySQL查询浏览器)。 但是,当我调用该过程时: (也在查询浏览器中) 它返回一个错误: 为什么这个例子不起作用? 问题答案: 无法复制。对我来说效果很好: 也许您应该粘贴整个错误消息,而不是对其进行汇总。

  • 问题内容: 我有一个具有以下属性的类: 现在,我有一个包含这样的对象的对象, 我需要将此数组列表传递给sql服务器存储过程,并将学生对象数据插入表中。如何在Java中最好地实现这一目标?我需要有一个存储过程。 Java版本8,Sql Server 2014(如果有任何用途)。 问题答案: 使用Mark Rotteveel提供的输入,我能够做到。谢谢马克,肖恩也感谢您的输入。这是可能对您有用的任何人

  • 例如,我有一个员工列表。我想将这个列表作为一个表,并将它与另一个表连接起来。但是员工列表应该作为参数从C#传递。

  • 问题内容: 有没有一种方法可以将数组存储到mysql字段中?我正在创建一个评论评分系统,因此我想存储用户ID数组以防止进行多次投票。我将创建一个新表,其中包含评论ID和对此评论进行投票的用户ID数组。然后,我将加入评论表和该表,并检查当前用户ID是否存在于选民数组或注释中。如果是这样,将禁用投票图标。我想我会避免以这种方式在循环中使用mysql查询。 您碰巧知道更好的方法吗? 问题答案: 您始终可