select、where、from、to

select 陳述式會回傳一個記錄(nid)陣列。它可以搭配 wherefromto 子句使用。

範例:

下面這個例子從 Customer 表格中取出前 10 個名字含有字母「s」的名字:

(select Customer where 'First name' like "s" from 0 to 9).'first name'

where 子句

where 子句的內容是在伺服器上執行的。

  • 因此,where 子句中無法使用某些函式,例如 alertdialog

From To

使用 fromto 時,只會回傳索引 0 到 9 的記錄。

  • 這個功能在取出前 x 筆記錄,或為查詢結果分頁時很好用。

執行區塊

執行區塊就是 select 陳述式結尾那個點號後面的部分。在上面的例子中,執行區塊是 'first name'

比較複雜的執行區塊可以包含變數,甚至再嵌入 select 陳述式。和函式一樣,區塊中的最後一道陳述式決定結果陣列的型別與值。

範例:

下面這段程式碼產生一個數字陣列,代表每位客戶的銷售總額:

(select Customer where 'First name' like "s" from 0 to 9).
  (
   var a := id;
   var i := select invoice where customer = a;
      sum(i.TOTAL);
   )

警告:

如果執行區塊中會存取其他表格,程式碼在伺服器上執行時可能出現問題。

  • 遇到這種情況,改用 for i in select 迴圈會比較好。