【问题标题】:Dynamic parameterized query with like带有like的动态参数化查询
【发布时间】:2016-02-12 08:38:20
【问题描述】:

正常赋值运算符工作正常,但类似操作不适用于存储过程中的以下查询,您能否更正查询的问题?

在基于查询的过程下仅更改为 LIKE 运算符时会引发异常

AND APP_FRAMES.APP_EXT_CODE =:IN_APP_EXT_CODE%;      -- working

AND APP_FRAMES.APP_EXT_CODE LIKE %:IN_APP_EXT_CODE%; -- not working

工作代码:

QUERY_STR := 'select * from APP_FRAME_PROPERTIES,APP_FRAMES
Where APP_FRAME_PROPERTIES.APP_EXT_CODE = APP_FRAMES.APP_EXT_CODE
AND APP_FRAMES.APP_EXT_CODE =:IN_APP_EXT_CODE';

OPEN OUT_RESULT FOR QUERY_STR USING IN_APP_EXT_CODE;

【问题讨论】:

    标签: sql oracle plsql


    【解决方案1】:

    您必须连接 '%' 文字:

    AND APP_FRAMES.APP_EXT_CODE LIKE '%' || :IN_APP_EXT_CODE || '%'; 
    

    整个查询将是:

    QUERY_STR := 'select * from APP_FRAME_PROPERTIES,APP_FRAMES
    Where APP_FRAME_PROPERTIES.APP_EXT_CODE = APP_FRAMES.APP_EXT_CODE
    AND APP_FRAMES.APP_EXT_CODE LIKE ''%'' || :IN_APP_EXT_CODE || ''%'' ';
    

    【讨论】:

    • 谢谢你的回答,这些都在字符串里面,所以不需要任何额外的字符,对吧?
    • QUERY_STR := 'select * from APP_FRAME_PROPERTIES,APP_FRAMES where APP_FRAME_PROPERTIES.APP_EXT_CODE = APP_FRAMES.APP_EXT_CODE AND APP_FRAMES.APP_EXT_CODE ''%'':IN_APP_EXT_CODE''%'';
    • @sunleo,似乎是正确的,如果您添加 LIKE 关键字和 || 竖线。
    • 完美,你能告诉我乳清吗||这里需要吗?任何参考或文档链接都会很受欢迎。
    • 请告诉我||的确切用法是什么在这里,因为已经查询只是字符串格式。
    猜你喜欢
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-01
    • 2014-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多