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

在单个参数中传递多个值

阴雪风
2023-03-14
问题内容

假设我有这个功能:

CREATE OR REPLACE FUNCTION test_function(character varaying)
  RETURNS integer AS
$BODY$
DECLARE
some_integer integer;
begin
   Select column2 from test_table where column1 in ($1) into some_integer;
end;
Return some_integer;
$BODY$
LANGUAGE plpgsql VOLATILE COST 100;

我想这样称呼它:

Select * from test_function ('data1', 'data2','data3');

当然,不能用这种方法来完成,因为Postgres试图用该名称和三个不存在的参数来查找函数

我试图用引号引起来,但在这种情况下,参数解释错误: data1’,’data2’,’data3 ,就像一个字符串一样。

有没有一种方法可以在参数中放置多个值,以便IN子句可以识别它?


问题答案:

您的函数将不会被创建。RETURN之后end是句法废话。

无论哪种方式,带有
VARIADIC
参数的函数都可以 完全满足 您的要求:

CREATE OR REPLACE FUNCTION test_function(VARIADIC varchar[])
 RETURNS SETOF integer AS
$func$
SELECT column2
FROM   test_table
WHERE  column1 = ANY($1);
$func$  LANGUAGE sql;

致电(根据需要):

SELECT * FROM test_function('data1', 'data2', 'data3');

使用简单的SQL函数,简单示例不需要plpgsql。但也VARIADIC适用于plpgsql函数。

使用,RETURNS SETOF integer因为这显然可以返回多行。



 类似资料:
  • 问题内容: 我的报告中有几个“多项选择”参数。我正在尝试找到一种方法来为Web查询字符串中的单个参数传递多个值?如果我传递一个值,则可以正常工作。 该报告运行良好,可以为单个参数选择多个选项。我的麻烦在于网络查询字符串。 问题答案: 尽管John Sansom的解决方案有效,但还有另一种方法可以执行此操作,而不必使用可能效率低下的标量值UDF。在SSRS报告中,在查询定义的“参数”选项卡上,将参数

  • 但是,当我试图将此代码更改为以下代码时,我得到了一个错误-错误:Main method,在类MyClass中找不到,请将Main method,定义为:public static void Main(string[]args)。我需要接收owner和consumerName作为我的程序的参数/输入。 ,这是怎么做到的?

  • 我得到了。ORA-1722向过程传递一个单个变量而不是一个数字(如54,55,56)时出错。 在过程光标块中,我写了: 运行该过程时,错误出现在上面的 select 语句中。 有没有办法在单个参数中处理这种情况

  • 问题内容: 我试图弄清楚如何在URL中传递多个参数。我想将纬度和经度从我的android类传递给Java servlet。我怎样才能做到这一点? 在这种情况下,输出(写入文件)为。这是可行的,但我想在两个单独的参数中传递纬度和经度,以便减少在服务器端的工作。如果不可能,我如何至少在&之间添加一个空格,以便可以使用class获取经度和纬度。我试过以下行,但无济于事。 我的servlet代码如下: 我

  • 本文向大家介绍在 mapper 中如何传递多个参数?相关面试题,主要包含被问及在 mapper 中如何传递多个参数?时的应答技巧和注意事项,需要的朋友参考一下 1、第一种:   2、第二种:使用 \@param 注解:   然后,就可以在 xml 像下面这样使用(推荐封装为一个 map,作为单个参数传递给mapper)   3、第三种:多个参数封装成 map

  • //在这里写什么都行