oracle如何insert into 多個values
稍微熟悉Oracle的都知道,如果我們想一條SQL語句向表中插入多個值的話,如果如下語句
INSERT INTO 某表 VALUES(各個值),VALUES(各個值),.....;
這樣會報錯的,因為oracle是不支援這種寫法的,如果多個INSERT INTO VALUEES(各個值);這樣以“;”隔開一同執行也是不行的,oracle也是不支援的。
不過MySQL這兩種方式都是支援的。在MySQL中還可以使用如下格式的插入語句:
示例: insert into persons (id_p, lastname , firstName, city ) values (200,'haha' , 'deng' , 'shenzhen'), (201,'haha2' , 'deng' , 'GD'), (202,'haha3' , 'deng' , 'Beijing');
這樣就批量插入資料了
SQL Server也是不支援這兩種寫法的。
然而,有時我們在開發過程中,如果是用的oracle資料庫的話,有時很需要這種“INSERT INTO 某表” 一次效能插入多個值這樣的功能,但oracle又不支援以上兩種方式那麼我們怎麼辦?是的可能你很機靈的想到了幾種方法,如儲存過程,或著INSERT INTO 某表 SELECT * FROM 某個表等,不過宣告一下,我們在此不探討這些方法,而且都有一定的侷限性,有時我就要插入指定的幾個值,而且一條SQL語句完成,儲存過程的話,萬不得已,建議大家不要使用,當然這個根據情況而定,可以讀讀這個部落格
那麼有沒有其他方法呢?答案是肯定有的,也許熟悉oracle資料庫的可能知道從oracle9i版本以後,可以使用一種方法即:
"INSERT ALL INTO a表
VALUES(各個值)
INTO a表 VALUES (其它值)
INTO a表 VALUES(其它值) ....再跟一個SELECT 語句"。
後邊跟的SELECT 語句我們可以從虛擬表裡查如 SELECT 1 FROM DUAL。注意後邊跟的SELECT語句可以隨意,不過不是把它SELECT出來的內容插入前邊的表裡,而是起到前邊的多個數據每次插入多少行的作用,這個多少行是和後邊跟的SELECT語句查出來幾條而定的,如後邊的跟的SELECT 語句查出了15條記錄,那麼前邊的"INSERT ALL INTO a表 VALUES(各個值1) INTO a表 VALUES (其它值2) INTO a表 VALUES(其它值3)
我們要的是批量插入多個VALUES這樣的一條記錄,所以後邊的SELECT 語句只要能查出一條記錄就行,建議大家後邊用SELECT 1 FROM DUAL。
下邊看一個例子,一目瞭然,一看就會用了:
OK了,我們實現了沒用儲存過程用一條SQL語句完成了向oracle的表中插入多個指定的值。也許你會問這有啥用處,告訴你,如果你在一定情況下用到它,作用就大了,避免了寫複雜而又沒必要寫的儲存過程,避免了執行多個SQL語句多次連線資料庫的開銷,當你知道了學到了,遇到問題用的時候就會明白了,不過鄙人不才,對資料庫瞭解不深,如果你覺得說的沒有道理或者你有更好的點子或者方法,非常歡迎留言交流,以便您,我,還有大家,共同的學習與成長!
出處:http://blog.csdn.net/chenleixing/article/details/45165761/
=======================================================
對於以上方法本人親測如下:
環境:
PL/SQL Developer Version 9.0.0.1601
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
測試用表:jack_20170206_aa
insert all into jack_20170206_aa values('4014033') into jack_20170206_aa values('4065304') into jack_20170206_aa values('4088136') into jack_20170206_aa values('4092405') select 1 from dual;
因為我的表裡只有一個欄位,所以就沒有寫出欄位名來。
如果插入的不是全部欄位,也可以使用下面的形式:
insert into sc(sno,cno) values('95020','1')
相關推薦
oracle到底能不能insert into 多個values!?
稍微熟悉oracle的都知道,如果我們想一條SQL語句向表中插入多個值的話,如果INSERT INTO 某表 VALUES(各個值),VALUES(各個值),.....;這樣會報錯的
oracle如何insert into 多個values
稍微熟悉Oracle的都知道,如果我們想一條SQL語句向表中插入多個值的話,如果如下語句 INSERT INTO 某表 VALUES(各個值),VALUES(各個值),.....; 這樣會報錯的,因為oracle是不支援這種寫法的,如果多個INSERT INTO VALUEES(各個值);這樣以“;”隔開一
select into 多個值 為空
select into 為空和多個值: 1、異常處理法 將 select ... into ............; 的地方改寫成: begin select ... into ............; exception when no_data_fou
多個JavaScript庫使用 $ 號的命名沖突問題
多個 script 一個 對象 conflict onf java read 調用 多個JavaScript庫使用 $ 號的命名沖突問題: 1. 為解決這個問題,jQuery 提供了一個 jQuery.noConflict() 方法,調用該方法可以把對 $ 標
nginx 配置多個主機
安裝 code -a reload res list onf 內容 efault 我現在想配置 兩個站點,通過域名來區分訪問不同的網站目錄 比如有個域名 baidu.com 第二個域名 google.com,我有兩個網站目錄, /opt/web/baidu;
如何同時對多個表或列操作
lac procedure states lag nds 過濾 遊標 字符 ret 通過使用這個存儲過程,你就可以方便的對數據庫中具有一定規則的或者全部表,對這裏的字段進行各種操作,具體看示例! CREATE PROCEDURE SP_execSQLonDB (@T
SQL Cookbook:操作多個表
規則 原因 解決 pre nio union all logs 使用 所有 1、記錄集的疊加 使用union all union all包含重復的結果,union篩選掉重復項(可能需要排序) 1 select * from film where film_id <
三星又推出新工具啦!Gear VR 可以兼容多個視頻
遺憾 測試版 啟動 obi 美國 alt 開發 大小 電池 (52VR開發網2017年5月5日訊)Gear VR的專用Netflix應用程序是傳統2D內容可以在VR中工作的很好的展示,但缺點是僅適用於一個視頻服務。 不過,三星本身的一款新應用推出了類似的應用程序帶入頭顯。
python系列(五)centos6.x中部署多個python版本
python pyenv centos6.x virtualenv 博主QQ:819594300博客地址:http://zpf666.blog.51cto.com/有什麽疑問的朋友可以聯系博主,博主會幫你們解答,謝謝支持!使用pyenv+virtualenv方式部署python多版本pyenv
logstash 創建多個索引
logstash1、server.conf文件[[email protected]/* */ bin]$ cat server.conf input { redis { host => "10.10.45.200"
如何將字符串分割賦值給多個shell變量
lock ext shell變量 宋體 for prev spa str -a 如何將字符串分割賦值給多個shell變量shellTarget Target 比如字符串"111|222|333"分割分別賦值給三個shell變量 $ a=‘111|222|333
多個Fragment界面重疊和拍照閃退問題
map() 拉取 圖片 getheight eat details directory 實例化 ict 記錄最近遇到的多個Fragment界面重疊和調用系統相機拍照閃退問題,同時總結解決方案。 ----------------------------------------
轉-eclipse管理多個workspace
nbsp 說明 就會 項目 常用 itl 鼠標 targe 打開 Eclipse作為Java開發中最常用的開發工具,大家都很熟悉了,但是,當你做過很多項目後你會發現你的eclipse的package explorer視圖下顯示的project超級多,這時你可能會關閉一些不經
在一個進程中定義多個線程
daemon 之前 args 設置 tar main art blog thread import threadingfrom time import ctime,sleepimport timedef music(name): print(‘listening to
在struts2中配置自定義攔截器放行多個方法
return med ttr limit ring req tac cat invoke 源碼: 自定義的攔截器類: //自定義攔截器類:LoginInterceptor ; package com.java.action.interceptor; import j
wampserver 安裝多個php版本號報錯之關鍵問題
amp rec released detail receive duang 之前 報錯 onf 近期喜歡上用wampserver來搭建php本地執行環境 主要是一鍵安裝 特easy 之前一直用的是 appserv 也挺好用的 用了wamp後 才發現wamp
python基礎一 ------如何獲取多個字典相同的鍵
class dom 集合 pre app wke 生成 參數 tool 需求: 足球賽第一場進去統計 {"A":3,"B":2,"C":1}足球賽第二場進去統計 {"A":3,"C":1}足球賽第二場進去統計 {"A":2,"B":2}統計每場都有進球的人----&g
多個切面表達式
cati port tro end mvc 表達式 class ring source <?xml version="1.0" encoding="utf-8"?> <beans default-init-method="init" default-de
.net Kafka.Client多個Consumer Group對Topic消費不能完全覆蓋研究總結(二)
eight 分享 stat .com ima topic consumer 閱讀 padding 依據Partition和Consumer的Rebalance策略,找到Kafka.Client Rebalance代碼塊,還原本地環境,跟蹤調試,發現自定義Consumer G
[C/C++] multimap查找一個key對應的多個value
out blog urn -h multimap 叠代器 find code range 在multimap中,同一個鍵關聯的元素必然相鄰存放。基於這個事實,就可以將某個鍵對應的值一一輸出。 1、使用find和count函數。count函數求出某個鍵出現的次數,find函數