亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? oracle.lisp

?? Oracle數(shù)據(jù)訪問(wèn)類
?? LISP
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
      )            ; Do a real fetch from Oracle     (t (let ((fetch_status (oracle_fetch_row (curconn))))          (cond ((not (lisp-truth fetch_status))                 (error (oracle_last_error (curconn))))                ((= fetch_status 2)                 ; Newly arrived at EOF - do nothing                 )                (t ; Good fetch - get and convert row data                 (setf result (oracle_row_values (curconn)))                 (check-success)                                  ; Convert NULL values to NIL                 (map-into result #'from-sqlval result)                                    ; Convert number and string types to Lisp based on Oracle type                 (let ((colinfo (oracle_column_info (curconn))))                   (check-success)                   (map-into result #'convert-type result colinfo)                   result))))))    ; Set the flag that fetch was called at least once.    ; This is to avoid further fetch calls to underlying Oracle library     ; when we are already at EOF.    (setf (db-fetch-called *oracle-connection*) t)    (row-to-result result result-type)));----------------------------------------------; FETCH-ALL(defun fetch-all (&optional max-rows (result-type 'ARRAY) (item-type 'ARRAY))"(ORACLE:FETCH-ALL(&optional max-rows (result-type 'ARRAY) (item-type 'ARRAY))Fetch all rows from a query and return result as a sequence ofsequences.  Arguments (all optional) are:   max-rows      Maximum number of rows to fetch   result-type   Sequence type of row set 'ARRAY (default) or 'LIST   item-type     Sequence type of columns per row,'ARRAY (default) or 'LIST"  (check-connection "fetch all rows of data")    (do ((result (make-array 100 :element-type item-type			   :fill-pointer 0 :adjustable t))       (count 0 (1+ count))       (row (oracle:fetch) (oracle:fetch)))      ((or (null row) (when max-rows (>= count max-rows)))       (coerce result result-type))      (vector-push-extend (coerce row item-type)				      result)));----------------------------------------------; PEEK(defun peek (&optional (result-type 'ARRAY))"(ORACLE:PEEK (&optional (result-type 'ARRAY)))Peek at next row of data (without fetching it).  Same as fetch, exceptdoes not advance the database cursor to the next row.  Returns NIL ifat EOF.  If data is available, returns row data as FETCH (see FETCHfor data format and conversions done).Arguments: none"  (check-connection "peek at next row of data")  (cond ((not (db-fetch-called *oracle-connection*))         (setf (db-pending-row *oracle-connection*) (fetch)))        ((and (not (db-pending-row *oracle-connection*))              (not (eof)))         (setf (db-pending-row *oracle-connection*) (fetch))))  (row-to-result (db-pending-row *oracle-connection*) result-type));----------------------------------------------; COLUMNS - Return column info for most recent SELECT(defun columns ()"(ORACLE:COLUMNS)Returns an array of column information structures, one for eachresult column in the most recent SELECT statement.  Each structure hasslots:   NAME      =  Oracle colume name, or the expression selected.  If the                query used a column alias, \"SELECT <expr> AS <name>\" this                alias will be returned.   TYPE      =  Oracle data type (VARCHAR, NUMBER, DATE, ...)   SIZE      =  Oracle data length (useful mostly for character types)   SCALE     =  For numeric types, number of digits to right of decimal   PRECISION =  For numeric types, total number of significant digits   NULL_OK   =  T if NULLs allowed, NIL if nulls are not allowed.Arguments: none"  (check-connection "get column information")  (let ((cached-info (db-colinfo *oracle-connection*)))    (if cached-info        cached-info      (let ((result (oracle_column_info (curconn))))        (check-success)        ; Convert C truth to Lisp for export        (map-into result                  #'(lambda (col)                      (setf (sqlcol-null_ok col) (lisp-truth (sqlcol-null_ok col)))                      col)                  result)        (setf (db-colinfo *oracle-connection*) result)        result))));----------------------------------------------; EOF(defun eof ()"(ORACLE:EOF)Returns EOF status.  A SELECT query is consdiered at EOF if the nextFETCH will return no data.  Must be connected to a database, and havean active SELECT statement.Arguments: none"  (check-connection "determine if at fetch EOF")  (cond   ((not (db-fetch-called *oracle-connection*))    (null (peek)))   ((db-pending-row *oracle-connection*)    nil)   (t (let ((oracle-eof (lisp-truth (oracle_eof (curconn)))))        (check-success)        (when (not oracle-eof)              (setf (db-pending-row *oracle-connection*) (fetch)))        (null (db-pending-row *oracle-connection*))))));----------------------------------------------; INSERT-ROW(defun insert-row (table vals)"(ORACLE:INSERT-ROW table values)Inserts a row into table.  First argument is a table name, secondargument is a map of column names to values, either a hash table or alist of (name, value) pairs.  Columns missing from the map will begiven the default Oracle value, or NULL.Returns: the number of rows inserted (i.e., 1)."  (when (null vals) (error "NULL name -> value map given"))  (setf vals (check-pairs vals))  (when (= 0 (hash-table-count vals)) (error "Empty column map given"))  ; Build the INSERT statement  (let ((sql (cat "INSERT INTO " table " ("                  (comma-list-of-keys vals)                  ") VALUES ("                  (comma-list-of-keys vals t)                  ")")))    (run-sql sql vals)));----------------------------------------------; UPDATE-ROW(defun update-row (table condition vals &optional params)"(ORACLE:UPDATE-ROW table condition values &optional params)Updates rows in a table.  First argument is the table.  Secondargument is a condition expression for a WHERE clause (without the\"WHERE\") which determines which rows are updated.  Third argument isa map of columns to be updated to their new values.  The map may begiven as a hash or list of (name, value) pairs.  Last optionalargument is used to specify bind parameters that may occur in thecondition expression; this is most commonly done when the condition isa match on a primary key, e.g.: \"pk_column = :pk_val\".Returns: the number of rows updated."  (when (null vals) (error "NULL name -> value map given"))  (setf vals (check-pairs vals))  (when (= 0 (hash-table-count vals)) (error "Empty column map given"))  ; Build the UPDATE statement  (let ((sql (cat "UPDATE " table " SET "))        (plural nil))    (loop for hkey being each hash-key of vals do          (if plural              (setf sql (cat sql ", "))            (setf plural t))          (setf sql (cat sql hkey " = :" hkey)))    (setf sql (cat sql " WHERE " condition))    ; Note we need to convert params to hash to combine it    (run-sql sql (hash-combine (check-pairs params) vals))));----------------------------------------------; ROW-COUNT(defun row-count ()"(ORACLE:ROW-COUNT)For SELECT statements, returns the number of rows fetched (NOT peeked)so far.  For other statements (INSERT/UPDATE/DELETE), returns thenumber of rows inserted/updated/deleted.  Must be connected to adatabase and have an active SQL statement.Arguments: none"  (check-connection "get number of rows fetched or modified")  (let ((rowcount (oracle_rows_affected (curconn))))    (check-success)    ; Maybe adjust downward to account for lookahead row    (if (db-pending-row *oracle-connection*)        (- rowcount 1)      rowcount)));----------------------------------------------; AUTO-COMMIT(defun auto-commit (enable)"(ORACLE:AUTO-COMMIT)Enables or disables auto-commit.  When auto-commit is enabled,modifications to the database are committed (made permanent) aftereach call to RUN-SQL.  With auto-commit disabled, it is the callersresponsibility to explictly commit (or abort) changes by callingCOMMIT (or ROLLBACK), or to ensure transactional integrity by usingthe WITH-TRANSACTION macro.  This function returns the previous statusof auto-commit.  This function may not be called inside theWITH-TRANSACTION macro.Arguments: (Boolean) Whether to enable auto-commit."  (when *oracle-in-transaction* (error "Setting of AUTO-COMMIT not allowed inside WITH-TRANSACTION"))  (auto-commit-nocheck enable)); Private version that does not check if in transaction(defun auto-commit-nocheck (enable)  (check-connection "enable/disable auto-commit")  (let ((old-value (lisp-truth (oracle_set_auto_commit (curconn) (c-truth enable)))))    (check-success)    old-value));----------------------------------------------; WITH-TRANSACTION(defmacro with-transaction (&body body)"(ORACLE:WITH-TRANSACTION (&body body))Executes Lisp code atomically as a transaction, ensuring that eitherall the database operations complete successfully, or none of them do.If there are any pending un-committed changes when this macro iscalled, they are ROLLED BACK so that the database is affected only bythe updates inside the macro body.  Nesting of the macro is notallowed and will produce an error.  There is no effect on the statusof auto-commit; it resumes its previous state when the macro exits.The value returned by the macro is that of the last form in the macrobody."  (let ((prev-auto-commit (gensym))        (commit-ok (gensym))        (result (gensym)))    `(progn       ; Check nesting       (when *oracle-in-transaction* (error "Nesting of WITH-TRANSACTION is not allowed."))       (let ((,prev-auto-commit t)             (,commit-ok nil))         (unwind-protect             (progn ; Mark us as inside the macro                    (setf *oracle-in-transaction* t)                    ; Turn off auto-commit and save for later restore                    (setf ,prev-auto-commit (auto-commit-nocheck nil))                    ; Roll back any pending operation so that the database sees                    ; only the effects of what's inside this macro                    (if (not ,prev-auto-commit) (rollback-nocheck))                    (setf ,result (progn ,@body))                    (commit-nocheck)                    (setf ,commit-ok t)                    ,result)           ; Cleanup           (progn (when (not ,commit-ok) (rollback-nocheck)) ; Only roll back if need to                  (auto-commit-nocheck ,prev-auto-commit)                  (setf *oracle-in-transaction* nil)))))));----------------------------------------------; COMMIT(defun commit ()"(ORACLE:COMMIT)Commits (makes permanent) any pending changes to the database.  Theauto-commit feature must be OFF to use this function, nor can it becalled inside the WITH-TRANSACTION macro. Always returns NIL.Argument: none"  (when *oracle-in-transaction* (error "COMMIT not allowed inside WITH-TRANSACTION"))  (commit-nocheck))(defun commit-nocheck ()  (check-connection "commit transaction")  (oracle_commit (curconn))  (check-success)  nil);----------------------------------------------; ROLLBACK(defun rollback ()"(ORACLE:ROLLBACK)Rolls back (abandons) any pending changes to the database.  Theauto-commit feature must be OFF to use this function, nor can it becalled insde the WITH-TRANSACTION macro.  Always returns NIL.Argument: none"  (when *oracle-in-transaction* (error "ROLLBACK not allowed inside WITH-TRANSACTION"))  (rollback-nocheck))(defun rollback-nocheck ()  (check-connection "rollback transaction")  (oracle_rollback (curconn))  (check-success)  nil); =-=-=-=-=-=-=-   INTERNAL FUNCTIONS BELOW     =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-; Helper functions for DO-ROWS(defun do-rows-var (v) (if (atom v) v (car v)))(defun do-rows-col (v) (if (atom v) v (cadr v)))(defun do-rows-index-of (v)  (let ((i (position (to-string (do-rows-col v))                     (map 'array                          #'(lambda (x) (to-string (sqlcol-name x)))                          (columns))                     :test #'equal)))    (when (null i)          (error (cat "DO-ROWS: Column '" (do-rows-col v)                      "' does not occur in query.  Allowed columns are:~%" (column-names))))    i)); COLUMN-NAMES; Get list of column names, one per line.

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产91精品欧美| 国产亚洲综合在线| 精品国精品国产尤物美女| 国产精品久久网站| 久久精品国产亚洲5555| 欧美日韩一区成人| 亚洲人成影院在线观看| jizz一区二区| 国产精品国产精品国产专区不片| 欧美色精品在线视频| 福利一区二区在线| 欧美aa在线视频| ww久久中文字幕| 成人精品一区二区三区中文字幕 | 日韩欧美亚洲国产另类| 午夜精品久久久久影视| 日本高清成人免费播放| 亚洲精品乱码久久久久久久久 | 亚洲色图在线播放| 色播五月激情综合网| 国产精品一区二区久久不卡| 久久久国产综合精品女国产盗摄| 国产成人免费在线观看| 中文字幕一区二区三区在线播放| 色婷婷综合久久久久中文一区二区 | 国内欧美视频一区二区 | 亚洲一区二区三区美女| 欧美在线观看视频在线| 亚洲国产sm捆绑调教视频 | 777色狠狠一区二区三区| 亚洲大片精品永久免费| 欧美成人a视频| 成人不卡免费av| 亚洲高清不卡在线| 亚洲人123区| 国产精品国产三级国产有无不卡 | 欧美三片在线视频观看 | 91首页免费视频| 偷拍自拍另类欧美| 亚洲综合色成人| 一区二区三区 在线观看视频| 日韩一区二区三区四区| 成人教育av在线| 国产成人av电影| 国产成人欧美日韩在线电影| 国产精品中文字幕日韩精品| 国产剧情一区在线| 粉嫩aⅴ一区二区三区四区| 国模大尺度一区二区三区| 国产一区二区精品久久99| 一区二区三区产品免费精品久久75| 国产午夜精品久久久久久久| 久久先锋影音av鲁色资源| 久久久蜜桃精品| 日本一区二区视频在线观看| 在线观看视频一区二区欧美日韩| 色综合天天在线| 久久机这里只有精品| 激情五月婷婷综合| 国产激情一区二区三区| 成人午夜免费av| 色8久久人人97超碰香蕉987| 91久久精品一区二区三| 欧美精品久久99久久在免费线| 国内精品国产三级国产a久久| 国产一区二区三区视频在线播放| 国产精品18久久久久久久久久久久| 成人午夜视频网站| 欧洲色大大久久| 日韩一区二区不卡| 国产蜜臀97一区二区三区| 玉米视频成人免费看| 日本午夜精品视频在线观看| 亚洲精品视频一区| 日日摸夜夜添夜夜添国产精品 | 国产成人综合亚洲91猫咪| 成人不卡免费av| 51午夜精品国产| 2020国产精品久久精品美国| 国产精品国产三级国产aⅴ入口| 一区二区不卡在线播放 | 亚洲日本va在线观看| 婷婷久久综合九色综合绿巨人| 九九九久久久精品| 日本在线不卡视频| 国产传媒欧美日韩成人| 欧美午夜理伦三级在线观看| 欧洲在线/亚洲| 欧美精品一区二区在线播放| 中文字幕亚洲在| 日韩成人一级片| 91视频.com| 精品国产乱码久久久久久图片| 国产精品乱码一区二区三区软件| 国产肉丝袜一区二区| 一区二区三区电影在线播| 麻豆视频观看网址久久| 午夜精品国产更新| 国产a级毛片一区| 制服丝袜亚洲色图| 国产喂奶挤奶一区二区三区| 国产精品不卡一区二区三区| 日本欧美肥老太交大片| 成人中文字幕合集| 欧美一区二区三区四区高清| 91精品国产aⅴ一区二区| 国产欧美一区二区精品久导航| 亚洲成av人在线观看| 成人av网站在线观看| 日韩欧美另类在线| 亚洲一区在线视频| www.亚洲激情.com| 精品国产91洋老外米糕| 午夜伊人狠狠久久| 色综合咪咪久久| 国产精品毛片高清在线完整版| 久久99国产精品久久99果冻传媒| 欧美三级在线视频| 综合亚洲深深色噜噜狠狠网站| 国产原创一区二区三区| 91精品国产综合久久香蕉的特点 | 国内精品视频一区二区三区八戒| 欧美性xxxxx极品少妇| 国产精品福利一区二区三区| 麻豆精品一二三| 欧美日韩免费高清一区色橹橹 | 国产精品亚洲第一区在线暖暖韩国| 欧美一区二区三区免费在线看| 国产精品大尺度| 久久av中文字幕片| 欧美久久久久久久久久| 国产精品视频第一区| 风间由美性色一区二区三区| 精品国精品国产| 免费看日韩精品| 欧美视频在线播放| 亚洲色图另类专区| 成人午夜av在线| 欧美国产精品一区二区| 中文字幕一区二区三区在线播放| 久久精品国产亚洲5555| 成人综合婷婷国产精品久久免费| 国产日韩一级二级三级| 精品一二三四在线| 日韩精品一区二区在线| 视频一区二区三区在线| 91福利社在线观看| 亚洲色图欧美偷拍| 91视频免费观看| 自拍av一区二区三区| 美女精品一区二区| 国产乱码字幕精品高清av| 欧美成人女星排行榜| 蜜臀久久99精品久久久久宅男| 色94色欧美sute亚洲线路一久| 亚洲精品亚洲人成人网在线播放| jizz一区二区| 亚洲欧美国产77777| 麻豆免费看一区二区三区| 欧美一区二区三区免费在线看| 日本欧美加勒比视频| 欧美一区二区福利在线| 欧美aaaaaa午夜精品| 91麻豆精品国产91久久久久久久久| 亚洲国产日韩精品| 91精品视频网| 日本sm残虐另类| 2020国产精品久久精品美国| 国精产品一区一区三区mba桃花| 26uuu精品一区二区在线观看| 热久久一区二区| 精品国产91乱码一区二区三区| 韩国精品主播一区二区在线观看| 91精品国产综合久久福利| 亚洲午夜免费视频| 在线不卡的av| 国产一区二区福利| 欧美激情综合在线| 成人av在线资源网站| 亚洲欧美日韩一区二区| 欧美日韩亚洲丝袜制服| 久热成人在线视频| 日韩欧美黄色影院| 福利一区二区在线观看| 一区二区三区在线影院| 777午夜精品免费视频| 国产在线视频精品一区| 国产精品久久久久精k8| 欧美三区在线观看| 老司机精品视频导航| 久久亚洲综合色| 不卡一区二区三区四区| 亚洲二区视频在线| 精品国产免费人成在线观看| 不卡一区二区三区四区| 视频一区国产视频| 欧美国产日韩在线观看| 欧美精品一二三| 国内精品免费**视频| 亚洲一线二线三线视频|