給資料塊新增where子句解決複雜條件的查詢

2021-08-31 22:45:05 字數 866 閱讀 3279

問題:在form中有些查詢條件在塊的pre-query觸發器中不是通過簡單的賦值就可以查詢,而要通過複雜的條件處理後再進行查詢,這樣在pre-query中為查詢而準備的一些函式就滿足不了需求了。此時就需要通過在資料塊上新增where子句來實現複雜條件的查詢。如下例:

if name_in('query_find.po_project_id') is not null then

l_where_case := 'invoice_id in (

select fih.invoice_id

from cux_form_invoice_headers_all fih,

cux_form_invoice_lines_bak fil,

ont.oe_order_lines_all ool

where fih.invoice_id = fil.invoice_id

and fil.order_line_id = ool.line_id

and ool.project_id = ' || name_in('query_find.po_project_id') || ')';

set_block_property('update_headers', default_where, l_where_case);

(注意:在手電筒查詢時,如果有where子句,則在查詢完一次後一定要記得將where子句重新初始為空,否則,當用手電筒查詢完後,要想將全部資料查詢出來而使用ctrl+f11是沒有效果的,因為在用手電筒查詢時,已經通過where子句將查詢條件加在該資料塊上了,所以當使用ctrl+f11時,資料塊也是帶著where條件查詢的,所以顯示出來的現象就是用ctrl+f11是沒有效果的。)

SQL 過濾資料(使用WHERE子句)

只檢索所需要資料需要指定搜尋條件,搜尋條件也稱為過濾條件。在select語句中,資料根據where子句中指定的搜尋條件進行過濾,即where 子句用於過濾記錄,也就是where 子句用於提取那些滿足指定標準的記錄。where子句在表名 from子句 之後給出。where子句不僅用於select語法,...

MySql 使用where子句過濾資料

示例使用的資料表在上乙個部落格中建立的 示例如下 查詢 等於10.5的行 select from commodity where price 10.5 輸出 1 1001 牙刷 10.5 上個示例中,我們使用到了 這個操作符,下面列出所有條件操作符 where操作符 等於 不等於 不等於 小於 大於...

SQL之過濾資料 where子句

select prod id,prod price from products where prod price 3.49 檢索products表中兩個列,只返回prod price值等於3.49的行。注意 由於資料庫軟體的指定。結果可能是3.490,3.4900。注意 並非所有資料庫軟體都支援所有...