前提:
創(chuàng)新互聯(lián)長期為1000多家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為雙城企業(yè)提供專業(yè)的成都做網(wǎng)站、成都網(wǎng)站建設(shè),雙城網(wǎng)站改版等技術(shù)服務(wù)。擁有十年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
分頁參數(shù):size = 20 page = 2;
沒有order by的查詢;
嵌套子查詢,兩次篩選(推薦使用)。
SQL語句:
SELECT *
FROM (SELECT ROWNUM AS rowno, t.*
FROM DONORINFO t
WHERE t.BIRTHDAY BETWEEN TO_DATE ('19800101', 'yyyymmdd')
AND TO_DATE ('20060731', 'yyyymmdd')
AND ROWNUM = 20*2) table_alias
WHERE table_alias.rowno 20*(2-1);
擴展資料:
rownum總是從1開始的,第一條不滿足去掉的話,第二條的rownum 又成了1。依此類推,所以永遠沒有不滿足條件的記錄。
可以這樣理解:rownum是一個序列,是Oracle數(shù)據(jù)庫從數(shù)據(jù)文件或緩沖區(qū)中讀取數(shù)據(jù)的順序。它取得第一條記錄則rownum值為1,第二條為2。
依次類推:當使用“、=、=、between...and”這些條件時,從緩沖區(qū)或數(shù)據(jù)文件中得到的第一條記錄的rownum為1,不符合sql語句的條件,會被刪除,接著取下條。下條的rownum還會是1,又被刪除,依次類推,便沒有了數(shù)據(jù)。
運行腳本SQL @/admin/XX.sql 這里的/adminXX.sql 是絕對路徑名, linux系統(tǒng)的話要注意 目錄權(quán)限問題,windows就不用。問了人好像得一塊一塊的在黑框框里執(zhí)行,不過不能在網(wǎng)頁的那個頁面里執(zhí)行,為什么啊?1、建立betchinsert.bat文件。內(nèi)容:sqlplus username/password@服務(wù)名 @BETCH.SQL SQLINSERT.log exit2、建立betah.sql文件。內(nèi)容:可以寫多個sql文件,注意路徑要正確。在這里的nkgis.sql是文件夾名3、建立相應(yīng)的sql文件,如AE_USERS.sql4、執(zhí)行betchinsert.bat就可以執(zhí)行所有的sql文件。并且會在betchinsert.bat文件的同目錄中生成SQLINSER.log文件。1、登錄PL/SQL到指定數(shù)據(jù)庫。2、點擊上方工具欄的工具—導(dǎo)出表。3、摁住鍵盤的ctrl鍵,選擇要導(dǎo)出的表名(即多選)。4、然后勾選下方的“創(chuàng)建表”,選擇存放路徑及保存的文件名,然后點擊“導(dǎo)出”按鈕,等待完成即可。
可以使用
execute
immediate
--FYI
--execute
immediate不支持多行返回,如果需要可新建臨時表
declare
v_source_sql
varchar2(1000);
v_union_sql
varchar2(1000);
begin
select
column_name
into
v_source_sql
from
table_name
;--get
source
sql
v_union_sql='select
*
from
tablename2,('||v_source_sql
||')
h
where
......';--sql
str
--
之前先創(chuàng)建好所需字段的temp_table
execute
immediate('insert
into
temp_table
'||v_union_sql
);
--在臨時表中就是你所需要的數(shù)據(jù)。
exception
......
--如果只是需要返回單行數(shù)據(jù),則可將execute
immediate嵌入在sql中使用
--execute
immediate
str
into
parameter1
,parmeter2...--返回參數(shù)
where
column=:parameter....條件參數(shù)
--
-我說的很仔細吧:)
今天心情好
end;
select
substrb(create_time,1,4)
"年份",
sum(decode(substrb(create_time,6,2),'01',commission,0))
"1月",
sum(decode(substrb(create_time,6,2),'02',commission,0))
"2月",
sum(decode(substrb(create_time,6,2),'03',commission,0))
"3月",
sum(decode(substrb(create_time,6,2),'04',commission,0))
"4月",
sum(decode(substrb(create_time,6,2),'05',commission,0))
"5月",
sum(decode(substrb(create_time,6,2),'06',commission,0))
"6月",
sum(decode(substrb(create_time,6,2),'07',commission,0))
"7月",
sum(decode(substrb(create_time,6,2),'08',commission,0))
"8月",
sum(decode(substrb(create_time,6,2),'09',commission,0))
"9月",
sum(decode(substrb(create_time,6,2),'10',commission,0))
"10月",
sum(decode(substrb(create_time,6,2),'11',commission,0))
"11月",
sum(decode(substrb(create_time,6,2),'12',commission,0))
"12月"
from
test
group
by
substrb(create_time,1,4)
此語句是按create_time字段是字符型給出的,如果你的表中此字段是日期型,則進行一下轉(zhuǎn)化
/**
ORACLE的SQL規(guī)范,目的避免SQL執(zhí)行錯誤,提高SQL腳本的質(zhì)量;
一般執(zhí)行SQL在command模式下,所以每個完整的語句需要在后面加上斜杠("/"),特別是過程或函數(shù)必須在其后加上斜杠("/")
多條非過程SQL語句在最后面一條語句后加上斜杠("/"),如insert、update、delete。在執(zhí)行完,做下commit;
例子以表名TEST1說明,注意:create_str使用的varchar2類型,長度5000,如果SQL太長,要調(diào)整長度。
*/
declare
create_str varchar2(5000) := 'create table TEST1(ID int,REALNAME varchar2(32))';
count_flag number;
begin
select count(*)
into count_flag
from user_tables
where table_name = 'TEST1';
if count_flag 1 then
execute immediate create_str;
else
execute immediate 'drop table TEST1';
execute immediate create_str;
--字段注解規(guī)范
execute immediate 'COMMENT ON COLUMN "TEST1"."ID" IS ''編號''';
execute immediate 'COMMENT ON COLUMN "TEST1"."REALNAME" IS ''姓名''';
end if;
end;
/
declare
add_str? ? varchar2(5000) := 'alter table TEST1 add NICKNAME varchar(32)';
count_flag number;
begin
select count(*)
into count_flag
from user_tab_columns
where table_name = 'TEST1'
and column_name = 'NICKNAME';
if count_flag 1 then
execute immediate add_str;
--字段注解規(guī)范
execute immediate 'COMMENT ON COLUMN "TEST1"."NICKNAME" IS ''昵稱''';
end if;
end;
/
declare
add_str? ? varchar2(5000) := 'alter table TEST1 modify NICKNAME varchar(100)';
count_flag number;
begin
select count(*)
into count_flag
from user_tab_columns
where table_name = 'TEST1'
and column_name = 'NICKNAME';
if count_flag = 1 then
execute immediate add_str;
--字段注解規(guī)范
execute immediate 'COMMENT ON COLUMN "TEST1"."NICKNAME" IS ''昵稱''';
end if;
end;
/
declare
add_str? ? varchar2(5000) := 'alter table TEST1 drop column NICKNAME';
count_flag number;
begin
select count(*)
into count_flag
from user_tab_columns
where table_name = 'TEST1'
and column_name = 'NICKNAME';
if count_flag = 1 then
execute immediate add_str;
end if;
end;
/
declare
create_str varchar2(5000) := 'create index IDX_TEST1_ID on TEST1(id)';
count_flag number;
begin
select count(*) into count_flag from user_indexes where table_name='TEST1' and index_name='IDX_TEST1_ID';
if count_flag 1 then
execute immediate create_str;
else
execute immediate 'drop index IDX_TEST1_ID';
execute immediate create_str;
end if;
end;
/
declare
create_str varchar2(5000) := 'create sequence SEQ_TEST1 minvalue 1 maxvalue 999999999999 start with 1 increment by 1';
count_flag number;
begin
select count(*) into count_flag from user_sequences where sequence_name='SEQ_TEST1';
if count_flag 1 then
execute immediate create_str;
else
execute immediate 'drop sequence SEQ_TEST1';
execute immediate create_str;
end if;
end;
/
insert into TEST1
(id, realname, nickname)
select 1, '網(wǎng)名', '網(wǎng)蟲'
from dual
where not exists (select * from TEST1 where id = 1);
/
update TEST1 set realname='網(wǎng)名', nickname='網(wǎng)蟲' where id=1;
/
delete from TEST1 t where t.id=1;
/
本文題目:oracle怎么寫sql,Oracle怎么寫JAVA代碼
網(wǎng)頁鏈接:http://www.rwnh.cn/article26/dsdjdjg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、企業(yè)網(wǎng)站制作、手機網(wǎng)站建設(shè)、ChatGPT、網(wǎng)站收錄、網(wǎng)站設(shè)計公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)