国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

學在oracle數據庫中插入特殊符號

2024-08-29 13:37:34
字體:
來源:轉載
供稿:網友

  Oracle 非凡字符的插入
  
  環境配置:
  
  server:linux9
  
  db server: oracle817.4
  
  client os:windows2000 PRo
  
  oracle client: oracle 9i
  
  今天一個同事運行腳本,向數據庫中插入數據.數據的格式如下:
  
  SQL> ed
  
  已寫入文件 afiedt.buf
  
  1* insert into dept values(92,'Jackey&&jjjdd','HZ');
  
  SQL> /
  
  輸入 jjjdd 的值: dd
  
  原值 1: insert into dept values(92,'Jackey&&jjjdd','HZ');
  
  新值 1: insert into dept values(92,'Jackeydd','HZ');
  
  insert into dept values(92,'Jackeydd','HZ');
  
  *
  
  ERROR 位于第 1 行:
  
  ORA-00911: invalid character
  
  結果發現到數據庫中的數據和插入的數據不一致.主要表現是在插入的字符串的中假如包括了'&',
  
  則'&'后面的字符就會丟失.
  
  后來發現了造成這種情況的原因.因為'&'在sqlplusw中被定義為自定義變量標示符合,因此'&'
  
  符合后面的字符自然被解析為變量名字.因為沒有輸入變量的值,所以'&'后面的內容被認為是空的了.
  
  于是,我檢查了一下session中的設置發現.
  
  ----------------------------------------------------------------------------------
  
  已用時間: 00: 00: 00.00
  
  SQL> show all
  
  appinfo為OFF并且已設置為"SQL*Plus"
  
  arraysize 15
  
  autocommit OFF
  
  autoprint OFF
  
  autorecovery OFF
  
  autotrace OFF
  
  blockterminator "." (hex 2e)
  
  BTitle OFF and 為下一條 SELECT 語句的前幾個字符
  
  cmdsep OFF
  
  colsep " "
  
  compatibility version NATIVE
  
  concat "." (hex 2e)
  
  copycommit 0
  
  COPYTYPECHECK 為 ON
  
  define OFF
  
  describe DEPTH 1 LINENUM OFF INDENT ON
  
  echo OFF
  
  editfile "afiedt.buf"
  
  embedded OFF
  
  escape OFF
  
  用于6或更多行的 FEEDBACK ON
  
  flagger OFF
  
  flush ON
  
  heading ON
  
  headsep "" (hex 7c)
  
  instance "local"
  
  linesize 500
  
  lno 9
  
  loboffset 1
  
  logsource ""
  
  long 80
  
  longchunksize 80
  
  markup Html OFF HEAD "<style type='text/Css'> body {font:10pt Ar
  
  newpage 1
  
  null ""
  
  numformat ""
  
  numwidth 10
  
  pagesize 14
  
  PAUSE 為OFF
  
  pno 1
  
  recsep WRAP
  
  recsepchar " " (hex 20)
  
  release 801070400
  
  repfooter OFF and 為 NULL
  
  repheader OFF and 為 NULL
  
  serveroutput OFF
  
  shiftinout INVISIBLE
  
  showmode OFF
  
  spool OFF
  
  sqlblanklines OFF
  
  sqlcase MIXED
  
  sqlcode 0
  
  sqlcontinue "> "
  
  sqlnumber ON
  
  sqlpluscompatibility 8.1.7
  
  sqlprefix "#" (hex 23)
  
  sqlprompt "SQL> "
  
  sqlterminator ";" (hex 3b)
  
  suffix "sql"
  
  tab ON
  
  termout ON
  
  time OFF
  
  timing ON
  
  trimout ON
  
  trimspool OFF
  
  ttitle OFF and 為下一條 SELECT 語句的前幾個字符
  
  underline "-" (hex 2d)
  
  USER 為"SCOTT"
  
  verify ON
  
  wrap : 行將為已換行
  
  SQL>
  
  ----------------------------------------------------------------------------------
  
  在上面的輸出中,可以看到define參數被設置為on. 后來我從新設置define為off(set define off);
  
  重新執行插入語句,運行結果如下:
  
  SQL> CREATE TABLE TEST3 (
  
  2 ID NUMBER (2) PRIMARY KEY,
  
  3 NAME VARCHAR2 (20));
  
  表已創建。

  
  已用時間: 00: 00: 00.02
  
  SQL>
  
  SQL> show define
  
  define OFF
  
  SQL> insert into test3 values(2,'sgs&a&n');
  
  已創建 1 行。
  
  已用時間: 00: 00: 00.00
  
  SQL> select * from test3;
  
  ID NAME
  
  ---------- ----------------------------------------
  
  2 sgs&a&n
  
  已用時間: 00: 00: 00.00
  
  結果顯示,插入'&'字符成功.
  
  后來,我又在sqlplus直接運行,居然也成功.后來我檢查了一下define的設置,此時為 define on狀態.
  
  可是為什么卻可以插入了.后來又把他設置為off,同樣可以插入成功.因為我覺得sqlplus命令行是不支持
  
  自定義變量,因此可以插入成功.而sqlplusw支持自定義變量,所以一定要先設置過define off才可以.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 郸城县| 兴国县| 马公市| 筠连县| 绍兴县| 太和县| 胶南市| 横山县| 手机| 神农架林区| 聂拉木县| 仁布县| 湾仔区| 石河子市| 乌海市| 鄂尔多斯市| 于都县| 太白县| 南皮县| 长宁县| 昌平区| 盈江县| 南乐县| 岗巴县| 明水县| 新丰县| 苍梧县| 林周县| 遂平县| 惠东县| 嘉定区| 萝北县| 新巴尔虎左旗| 康保县| 襄垣县| 四川省| 天峻县| 连城县| 响水县| 瑞金市| 宁强县|