我有一些客户ID,姓名和姓氏的数据库。我用一些参数创建了程序,其中包括带参数的游标。我希望用光标显示客户姓名,姓氏,身份证。我想要显示,在我调用过程的地方,我例如在过程中写入参数,例如NULL NULL,它向我显示所有记录。接下来如果我写NULL,Surname,它会显示带有姓氏的记录。如果我写firstname,NULL,它只显示带有该名字的记录,如果我写了Firstname,lastname,它只显示与之匹配的记录。所以我的程序工作正常,但我需要在where子句n游标。这是我的光标
CREATE OR REPLACE PROCEDURE test_two(c_f_name VARCHAR2,c_l_name VARCHAR2) IS
CURSOR c2(f_name VARCHAR2,l_name VARCHAR2) IS
SELECT cus_id,cus_l_name,cus_f_name
FROM CUSTOMER
WHERE (cus_f_name IS NOT NULL AND (cus_f_name = f_name orcus_l_name
IS NULL))
AND (cus_l_name IS NOT NULL AND (cus_l_name = l_name or cus_f_name IS
NULL));
v_complex c2%ROWTYPE;
lv_show VARCHAR2(20);
f_name VARCHAR2(20) := c_f_name;
l_name VARCHAR2(20) := c_l_name;
BEGIN
open c2(f_name,l_name);
LOOP
FETCH c2 INTO v_complex;
dbms_output.put_line(v_complex.cus_id|| ' ' ||v_complex.cus_f_name|| ' '
||v_complex.cus_l_name);
EXIT WHEN c2%NOTFOUND;
END LOOP;
CLOSE c2;
END;
一切都是IFNE在那个程序,但我只需要正确的条款!谢谢你
答案 0 :(得分:0)
您可以使用LIKE
和NVL
的组合。
WHERE cus_f_name LIKE NVL(c_f_name, '%')
AND cus_l_name LIKE NVL(c_l_name, '%');
说明:
如果NVL
不是NULL
,则函数List<WebWindow> webWindows = client.getWebWindows();
WebWindow webWindow = webWindows.get(0);
HtmlPage page = (HtmlPage) webWindow.getEnclosedPage();
将返回第一个参数。
否则返回第二个参数。