代码之家  ›  专栏  ›  技术社区  ›  TomB

接受多个变量到SQL中

  •  0
  • TomB  · 技术社区  · 7 年前

    有没有办法让用户在SQL Developer中的ACCEPT中输入值列表?

    ACCEPT USER_ENTRY CHAR PROMPT 'Please enter values'
    
    select *
    from my_table
    where my_id in('&USER_ENTRY')
    

    当然,这适用于单个值,但我无法找到解决方案使其适用于多个值。例如,如果我想为ID“1”和“2”选择详细信息。

    我知道将信息加载到临时表中并对此进行查询,但由于项目的性质,如果可能的话,我宁愿避免这样做(用户将使用“前端”脚本调用此脚本,使用 @"MY_FILE_LOCATION\MY_SCRIPT.sql"; 因此无法看到它们正在运行的实际脚本,但需要输入多个值)。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Tony Andrews    7 年前

    如果您的ID是数字, 字符串,则用户实际上可以输入逗号分隔的ID列表,如果脚本如下所示:

    ACCEPT USER_ENTRY CHAR PROMPT 'Please enter values (separate by commas)'
    
    select *
    from my_table
    where my_id in(&USER_ENTRY);
    

    如果用户输入 1,5,76 那么实际运行的查询将是:

    select *
    from my_table
    where my_id in(1,5,76);
    

    事实上,这同样适用于字符串,但用户必须提供引号,例如。 'A1','B6','F88' 得到:

    select *
    from my_table
    where my_id in('A1','B6','F88');
    

    这让用户有责任正确输入数据,但SQL Developer从来就不是一个最终用户界面,它是一个用于 开发商