真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

oracle怎么整理代碼,oracle數(shù)據(jù)庫(kù)怎么寫代碼

oracle如何按日期分組,底下的代碼如何讓它成功?

GROUP BY TO_CHAR(ORDER_DATE,'YYYYMMDD')是按order_date的年月日是否相同做日期分組,你那代碼執(zhí)行有什么錯(cuò)誤嗎

在兩當(dāng)?shù)鹊貐^(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站制作、成都網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需搭建網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),網(wǎng)絡(luò)營(yíng)銷推廣,外貿(mào)網(wǎng)站建設(shè),兩當(dāng)網(wǎng)站建設(shè)費(fèi)用合理。

如何在oracle中使用存儲(chǔ)過(guò)程創(chuàng)建表,如果存在就先刪除

如果是沒(méi)有權(quán)限的話,照這下面做就OK了:

grant sysdba, dba, create session, create any table , create any view , create any index , create any procedure ,

alter any table , alter any procedure , drop any table , drop any view , drop any index , drop any procedure ,

select any table , insert any table , update any table , delete any table

to test_data(數(shù)據(jù)庫(kù)用戶名);

首先我覺(jué)得你的邏輯有問(wèn)題,既然數(shù)據(jù)庫(kù)里面存在了表你就刪除,但是你卻把創(chuàng)建表的執(zhí)行代碼寫在了else 條件里面;那意思如果數(shù)據(jù)庫(kù)存在了你要?jiǎng)?chuàng)建的這張表,你的邏輯只是把它刪除,但是卻沒(méi)有創(chuàng)建。

下面是我整理的代碼你看看:

create or replace procedure createtable(

tname varchar2

)

is

v_createsql varchar2(400);

v_dropsql varchar2(100);

v_count number(9);

begin

v_createsql:='create table '||tname||'(

a number(8) primary key,

b varchar2(20))';

v_dropsql:='drop table '||tname||' cascade constraints';

select count(*) into v_count from user_tables where table_name=upper('java7');

if v_count0 then

execute immediate v_dropsql;

commit;

end if;

execute immediate v_createsql;

commit;

end;

begin

createtable('java7');

end;

-- select * from java7

oracle數(shù)據(jù)庫(kù)怎么代碼操作文件上傳

采用winform實(shí)現(xiàn)需要的功能,首先在數(shù)據(jù)庫(kù)中建表,其中一個(gè)字段為Blob類型,怎么創(chuàng)建就不說(shuō)了。思路很簡(jiǎn)單,就是文件流讀取電腦上的文件,然后通過(guò)insert語(yǔ)句將文件的字節(jié)流數(shù)組存進(jìn)表中,代碼如下:

//通過(guò)Stream讀取文件,并轉(zhuǎn)換為byte數(shù)組

Stream

stream

=

File.Open(ChoosedFilePaths[i],

FileMode.Open,

FileAccess.Read,

FileShare.Read);

byte[]

buffer

=

new

byte[stream.Length];

stream.Read(buffer,

0,

buffer.Length);

string

constr

=

ConfigurationManager.ConnectionStrings["constr"].ConnectionString;

OracleConnection

conn

=

new

OracleConnection(constr);

OracleParameter

param

=

null;

OracleCommand

cmd

=

new

OracleCommand();

cmd.Connection

=

conn;

cmd.CommandText

=

"insert

into

FJG_FILE_MANAGE(NUMBERS,FILE_NAME,FILECONTENT)

VALUES('"

+

attributes.Number

+

"','"

+

attributes.FileName

+

"',:contents,'")";

param

=

new

OracleParameter("contents",

OracleType.Blob,

buffer.Length);

param.Value

=

buffer;

cmd.Parameters.Add(param);

try

{

conn.Open();

cmd.ExecuteNonQuery();

}

catch(System.Exception

e)

{

log.Append("上傳狀態(tài):t失??!rn"

+

"失敗原因:t"

+

e1.Message

+

"rnrn");

}

finally

{

cmd.Close();

}

本來(lái)采用的是OleDb,后來(lái)測(cè)試發(fā)現(xiàn)不好使,好像是Provider的問(wèn)題,然后改為OracleClient來(lái)進(jìn)行上傳,OracleClient不需要Provider。

關(guān)鍵是sql語(yǔ)句中Blob字段的參數(shù)要寫成“:ParameterName”的形式。

oracle 代碼問(wèn)題

其實(shí)先簡(jiǎn)單看,是從TB_CONTENT這張表中選取

strcontno, strmemlogname, inputchaser, inbargainor, dasubtime, intamountsum, strmainmater這些字段

其中strcontno, dasubtime, intamountsum, strmainmater正常顯示出來(lái)

而另外strmemlogname, inputchaser, inbargainor三個(gè)字段的內(nèi)容作為參數(shù),傳給函數(shù),通過(guò)函數(shù)加工顯示。

而pub_getdata_cs,pub_getdata應(yīng)該是包的名字,從數(shù)據(jù)庫(kù)的package里面能看到。

包的作用是封裝了若干個(gè)存儲(chǔ)過(guò)程,函數(shù)等??梢匀我獾恼{(diào)用其中的任何一個(gè)。

而lognm_getnm, get_corpname就是屬于包中的函數(shù)名字,這兩個(gè)函數(shù)是通過(guò)你輸入的參數(shù),完成特定的功能,比如輸入一個(gè)編碼,輸出編碼對(duì)應(yīng)的名字,這就可以通過(guò)函數(shù)的功能完成。你的這個(gè)調(diào)用是類似的,把那三個(gè)字段加工,輸出需要顯示的內(nèi)容,因?yàn)檩敵龊湍隳侨齻€(gè)字段是有關(guān)系的,所以才把那三個(gè)字段作為參數(shù)分別傳入?yún)?shù)。

這個(gè)除開(kāi)包和函數(shù),是最基本的語(yǔ)法了,所以我想你的疑問(wèn),也在包和函數(shù)上,具體的函數(shù)功能是什么,沒(méi)有代碼,大家也沒(méi)法猜,進(jìn)去讀讀應(yīng)該就知道了。

幫我分析下oracle的代碼謝謝!

首先,可以肯定,你這是一個(gè)數(shù)據(jù)庫(kù)的PL/SQL塊。

如果你要進(jìn)一步的了解,請(qǐng)找一下相關(guān)的語(yǔ)法資料。

下面我來(lái)給你分析一下。

DECLARE

Begin

End

這是一個(gè)PL/SQL塊得結(jié)構(gòu)。

CURSOR EMPCUR IS SELECT EMPNO,ENAME,SAL

FROM EMP WHERE DEPTNO = 30;

這是定義一個(gè)游標(biāo),也就是相當(dāng)于一個(gè)查詢的集合,暫時(shí)性的用個(gè)東西給保存起來(lái),這個(gè)東西就是cursor,也叫游標(biāo)。

TheEmpNo EMP.EMPNO%TYPE;

TheEName EMP.ENAME%TYPE;

TheSal EMP.SAL%TYPE;

上面這段的意思,是定義幾個(gè)變量。

那TheEmpNo EMP.EMPNO%TYPE;這句意思是,定義一個(gè)跟emp表的empno字段類型一樣的變量。

OPEN EMPCUR;

這個(gè)是要打開(kāi)游標(biāo),也就是去讓游標(biāo)執(zhí)行那個(gè)查詢語(yǔ)句,獲取數(shù)據(jù)。

LOOP

FETCH EMPCUR INTO TheEmpNo,TheEName,TheSal;

EXIT WHEN EMPCUR%NOTFOUND ;

DBMS_OUTPUT.PUT_LINE('編號(hào)-'||TheEmpNo||'員工姓名-'||TheEName||'工資-'||TheSal);

END LOOP;

如上的意思就是,循環(huán)的,把游標(biāo)中的數(shù)據(jù),一行一行的取出來(lái),然后打印出來(lái)。

EXIT WHEN EMPCUR%NOTFOUND ;這行意思是,如果游標(biāo)的數(shù)據(jù)取玩了,就退出。

我想刪除數(shù)據(jù)庫(kù)表中重復(fù)的行 ,用oracle怎么寫,急求代碼

在Oracle中如何利用Rowid查找和刪除表中的重復(fù)記錄 選擇自 cn_chenfeng 的 Blog

關(guān)鍵字 在Oracle中如何利用Rowid查找和刪除表中的重復(fù)記錄

出處

平時(shí)工作中可能會(huì)遇到當(dāng)試圖對(duì)庫(kù)表中的某一列或幾列創(chuàng)建唯一索引時(shí),系統(tǒng)提示 ORA-01452 :不能創(chuàng)建唯一索引,發(fā)現(xiàn)重復(fù)記錄。

下面總結(jié)一下幾種查找和刪除重復(fù)記錄的方法(以表CZ為例):

表CZ的結(jié)構(gòu)如下:

SQL desc cz

Name Null? Type

----------------------------------------- -------- ------------------

C1 NUMBER(10)

C10 NUMBER(5)

C20 VARCHAR2(3)

刪除重復(fù)記錄的方法原理:

(1).在Oracle中,每一條記錄都有一個(gè)rowid,rowid在整個(gè)數(shù)據(jù)庫(kù)中是唯一的,rowid確定了每條記錄是在Oracle中的哪一個(gè)數(shù)據(jù)文件、塊、行上。

(2).在重復(fù)的記錄中,可能所有列的內(nèi)容都相同,但rowid不會(huì)相同,所以只要確定出重復(fù)記錄中那些具有最大rowid的就可以了,其余全部刪除。

重復(fù)記錄判斷的標(biāo)準(zhǔn)是:

C1,C10和C20這三列的值都相同才算是重復(fù)記錄。

經(jīng)查看表CZ總共有16條記錄:

SQLset pagesize 100

SQLselect * from cz;

C1 C10 C20

---------- ---------- ---

1 2 dsf

1 2 dsf

1 2 dsf

1 2 dsf

2 3 che

1 2 dsf

1 2 dsf

1 2 dsf

1 2 dsf

2 3 che

2 3 che

2 3 che

2 3 che

3 4 dff

3 4 dff

3 4 dff

4 5 err

5 3 dar

6 1 wee

7 2 zxc

20 rows selected.

1.查找重復(fù)記錄的幾種方法:

(1).SQLselect * from cz group by c1,c10,c20 having count(*) 1;

C1 C10 C20

---------- ---------- ---

1 2 dsf

2 3 che

3 4 dff

(2).SQLselect distinct * from cz;

C1 C10 C20

---------- ---------- ---

1 2 dsf

2 3 che

3 4 dff

(3).SQLselect * from cz a where rowid=(select max(rowid) from cz where c1=a.c1 and c10=a.c10 and c20=a.c20);

C1 C10 C20

---------- ---------- ---

1 2 dsf

2 3 che

3 4 dff

2.刪除重復(fù)記錄的幾種方法:

(1).適用于有大量重復(fù)記錄的情況(在C1,C10和C20列上建有索引的時(shí)候,用以下語(yǔ)句效率會(huì)很高):

SQLdelete cz where (c1,c10,c20) in (select c1,c10,c20 from cz group by c1,c10,c20 having count(*)1) and rowid not in

(select min(rowid) from cz group by c1,c10,c20 having count(*)1);

SQLdelete cz where rowid not in(select min(rowid) from cz group by c1,c10,c20);

(2).適用于有少量重復(fù)記錄的情況(注意,對(duì)于有大量重復(fù)記錄的情況,用以下語(yǔ)句效率會(huì)很低):

SQLdelete from cz a where a.rowid!=(select max(rowid) from cz b where a.c1=b.c1 and a.c10=b.c10 and a.c20=b.c20);

SQLdelete from cz a where a.rowid(select max(rowid) from cz b where a.c1=b.c1 and a.c10=b.c10 and a.c20=b.c20);

SQLdelete from cz a where rowid (select max(rowid) from cz where c1=a.c1 and c10=a.c10 and c20=a.c20);

(3).適用于有少量重復(fù)記錄的情況(臨時(shí)表法):

SQLcreate table test as select distinct * from cz; (建一個(gè)臨時(shí)表test用來(lái)存放重復(fù)的記錄)

SQLtruncate table cz; (清空cz表的數(shù)據(jù),但保留cz表的結(jié)構(gòu))

SQLinsert into cz select * from test; (再將臨時(shí)表test里的內(nèi)容反插回來(lái))

(4).適用于有大量重復(fù)記錄的情況(Exception into 子句法):

采用alter table 命令中的 Exception into 子句也可以確定出庫(kù)表中重復(fù)的記錄。這種方法稍微麻煩一些,為了使用“excepeion into ”子句,必須首先創(chuàng)建 EXCEPTIONS 表。創(chuàng)建該表的 SQL 腳本文件為 utlexcpt.sql 。對(duì)于win2000系統(tǒng)和 UNIX 系統(tǒng), Oracle 存放該文件的位置稍有不同,在win2000系統(tǒng)下,該腳本文件存放在$ORACLE_HOME\Ora90\rdbms\admin 目錄下;而對(duì)于 UNIX 系統(tǒng),該腳本文件存放在$ORACLE_HOME/rdbms/admin 目錄下。

具體步驟如下:

SQL@?/rdbms/admin/utlexcpt.sql

Table created.

SQLdesc exceptions

Name Null? Type

----------------------------------------- -------- --------------

ROW_ID ROWID

OWNER VARCHAR2(30)

TABLE_NAME VARCHAR2(30)

CONSTRAINT VARCHAR2(30)

SQLalter table cz add constraint cz_unique unique(c1,c10,c20) exceptions into exceptions;

*

ERROR at line 1:

ORA-02299: cannot validate (TEST.CZ_UNIQUE) - duplicate keys found

SQLcreate table dups as select * from cz where rowid in (select row_id from exceptions);

Table created.

SQLselect * from dups;

C1 C10 C20

---------- ---------- ---

1 2 dsf

1 2 dsf

1 2 dsf

1 2 dsf

2 3 che

1 2 dsf

1 2 dsf

1 2 dsf

1 2 dsf

2 3 che

2 3 che

2 3 che

2 3 che

3 4 dff

3 4 dff

3 4 dff

16 rows selected.

SQLselect row_id from exceptions;

ROW_ID

------------------

AAAHD/AAIAAAADSAAA

AAAHD/AAIAAAADSAAB

AAAHD/AAIAAAADSAAC

AAAHD/AAIAAAADSAAF

AAAHD/AAIAAAADSAAH

AAAHD/AAIAAAADSAAI

AAAHD/AAIAAAADSAAG

AAAHD/AAIAAAADSAAD

AAAHD/AAIAAAADSAAE

AAAHD/AAIAAAADSAAJ

AAAHD/AAIAAAADSAAK

AAAHD/AAIAAAADSAAL

AAAHD/AAIAAAADSAAM

AAAHD/AAIAAAADSAAN

AAAHD/AAIAAAADSAAO

AAAHD/AAIAAAADSAAP

16 rows selected.

SQLdelete from cz where rowid in ( select row_id from exceptions);

16 rows deleted.

SQLinsert into cz select distinct * from dups;

3 rows created.

SQLselect *from cz;

C1 C10 C20

---------- ---------- ---

1 2 dsf

2 3 che

3 4 dff

4 5 err

5 3 dar

6 1 wee

7 2 zxc

7 rows selected.

從結(jié)果里可以看到重復(fù)記錄已經(jīng)刪除。


文章標(biāo)題:oracle怎么整理代碼,oracle數(shù)據(jù)庫(kù)怎么寫代碼
文章URL:http://weahome.cn/article/heejee.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部