【问题标题】:Search in procedure Oracle sql [duplicate]在过程Oracle sql中搜索[重复]
【发布时间】:2015-08-21 10:41:02
【问题描述】:

我想使用过程从数据库(Oracle)中搜索数据。

我的程序是:

PROCEDURE CUSTOMER_SEARCH(
v_customerName VARCHAR2,
v_Result OUT SYS_REFCURSOR)
AS
BEGIN
OPEN v_Result FOR
SELECT * FROM CHAT_CUSTOMER
WHERE CUSTOMERNAME like '%'+v_customername+'%';
END CUSTOMER_SEARCH;

但是当我通过输入 v_customerName = 'a' 测试这个过程时,它显示错误:

ORA-01722: invalid number

有什么建议可以纠正我的程序吗?

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    是的:使用正确的连接字符!在 Oracle 中,+ 用于将两个数字相加,而|| 用于将两个字符串连接在一起。所以,你的程序应该是:

    PROCEDURE CUSTOMER_SEARCH(
        v_customerName VARCHAR2,
        v_Result OUT SYS_REFCURSOR)
    AS
    BEGIN
      OPEN v_Result FOR
      SELECT * FROM CHAT_CUSTOMER
      WHERE CUSTOMERNAME like '%'||v_customername||'%';
    END CUSTOMER_SEARCH;
    /
    

    请记住,您可能希望使用 UPPER() 函数将 CUSTOMERNAMEv_customername 都设为大写,以使搜索不区分大小写。

    【讨论】:

    • 哇,它有效。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2010-10-25
    • 2023-02-10
    • 1970-01-01
    • 2011-06-29
    • 2011-06-03
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    相关资源
    最近更新 更多