游標有多種寫法,一種是報表里常見的
這種寫法呢,先定義一個接受sql語句的變量l_sql,而接受到的語句實際上只是一連串的字符串,還包含了4gl裡面的一些變量。寫好的l_sql裡面之所以有多個分段的雙引號是由於,l_sql裡面的字符串裡面包含了4gl裡存在的變量,這些變量之所以加雙引號是因為它不是實質的值,僅僅是一個變量,如果不加雙引號,PREPARE之後就會變成一串字符(比如where img01 = ‘g_ima.ima01’and ……),可以看到g_ima.ima01并不存在于查詢的表。經由PREPARE轉換,我理解為將l_sql的一串字符去掉雙引號,並且取出一些變量,比如g_ima.ima01實際的值,以及tm.wc clipped轉化可以猜想的到轉化后的真正sql語句與l_sql差別不是很大。
游標的另一種寫法 ,,單檔里有
因為sql語句里g_azb_rowid這是一個字符代表一個值但並不是一個值,所以我猜$符號應該是引用的意思。這種寫法不會出現上述雙引號問題。