當前位置:首頁 » 數據倉庫 » oracle資料庫基本語法
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

oracle資料庫基本語法

發布時間: 2022-09-26 11:06:56

1. Oracle資料庫存儲過程怎麼寫

Oracle存儲過程基本語法:

sql">CREATEORREPLACEPROCEDURE存儲過程名
IS
BEGIN
NULL;
END;

解釋:

行1:
CREATE OR REPLACE PROCEDURE 是一個SQL語句通知Oracle資料庫去創建一個叫做skeleton存儲過程, 如果存在就覆蓋它;
行2:
IS關鍵詞表明後面將跟隨一個PL/SQL體。
行3:
BEGIN關鍵詞表明PL/SQL體的開始。
行4:
NULL PL/SQL語句表明什麼事都不做,這句不能刪去,因為PL/SQL體中至少需要有一句;
行5:
END關鍵詞表明PL/SQL體的結束。


2. 誰知道Oracle資料庫存儲過程的語法

oracle
存儲過程
的基本語法
1.基本結構
CREATE
OR
REPLACE
PROCEDURE
存儲過程名字
(
參數1
IN
NUMBER,
參數2
IN
NUMBER
)
IS
變數1
INTEGER
:=0;
變數2
DATE;
BEGIN
END
存儲過程名字
2.SELECT
INTO
STATEMENT
將select查詢的結果存入到變數中,可以同時將多個
列存儲
多個變數中,必須有一條
記錄,否則拋出異常(如果沒有記錄拋出NO_DATA_FOUND)
例子:
BEGIN
SELECT
col1,col2
into
變數1,變數2
FROM
typestruct
where
xxx;
EXCEPTION
WHEN
NO_DATA_FOUND
THEN
xxxx;
END;
...
3.IF
判斷
IF
V_TEST=1
THEN
BEGIN
do
something
END;
END
IF;
4.while
循環
WHILE
V_TEST=1
LOOP
BEGIN
XXXX
END;
END
LOOP;
5.變數賦值
V_TEST
:=
123;
6.用for
in
使用cursor
...
IS
CURSOR
cur
IS
SELECT
*
FROM
xxx;
BEGIN
FOR
cur_result
in
cur
LOOP
BEGIN
V_SUM
:=cur_result.列名1+cur_result.列名2
END;
END
LOOP;
END;
7.帶參數的cursor
CURSOR
C_USER(C_ID
NUMBER)
IS
SELECT
NAME
FROM
USER
WHERE
TYPEID=C_ID;
OPEN
C_USER(
變數值
);
LOOP
FETCH
C_USER
INTO
V_NAME;
EXIT
FETCH
C_USER%NOTFOUND;
do
something
END
LOOP;
CLOSE
C_USER;
8.用pl/sql
developer
debug
連接資料庫後建立一個Test
WINDOW
在窗口輸入調用SP的代碼,F9開始debug,CTRL+N單步調試
參考
http://www.cnblogs.com/happyday56/archive/2007/07/05/806830.html

3. ORACLE資料庫 查詢表名 查詢列名 查詢列中所有數據的語法分別是

1.查詢所有表的表名: select table_name from user_tables
解釋:從系統表user_tables中可以查找出所有的表名字。
2.查詢表中的所有列名:desc table tablename(表名)。
解釋:通過desc (描述)tablename即可查找出表中的所有欄位。
3.查詢所有數據:select * from tablename t。
解釋:通過select 命令可以從tablename 中查找出所有的表數據。

4. Oracle的存儲過程基本語法和hibernate調用其存儲過程

在oracle中,可以在資料庫中定義子程序,這種程序塊叫存儲過程(procere),它存放在數據字典中,可以在不同用戶和應用程序中共享,並可以實現程序的優化和重用。 2:存儲過程的有點?? 過程運行在伺服器端,執行速度快? 過程執行一次後代碼就駐留在高速緩存中,在以後的操作中,直接調用緩存數據。? 確保資料庫的安全性,可以不授權用戶直接訪問應用程序中的一些表,而是授權用戶執行訪問資料庫的過程。? 自動完成需要預先執行的任務,過程可以在系統啟動時自動運行。、 3:存儲過程的創建和執行用戶存儲過程只能定義在當前資料庫中,可以使用sql語句或OEM創建。默認情況下,用戶創建的存儲過程歸登錄資料庫的用戶所擁有,DBA可以把許可授權給其他用戶。 Sql命令創建存儲過程 CREATE procere 過程名【(parameter parameter_mode date_type,….n)】 IS| AS BEGIN SQL_STATEMENT END 過程名其中 Parameter表示過程的參數。 parameter_mode:參數的類型,過程參數和函數參數一樣,有三種類型IN,OUT,IN OUT IN 表示參數是輸入給過程的。 OUT表示採納數載過程中被賦值,可以傳給過程的外部。 IN OUT表示可以傳內,可以傳外。 調用存儲過程直接輸入存儲過程的名字可以執行一個已經定義的存儲過程。 存儲過程的編輯修改修改存儲過程雖然可以和修改視圖一樣,用ALTER procere,但是他是用來重新編譯和驗證用的,如果要修改過程定義,建議還是用create or replace。 存儲過程的刪除當某個過程不再需要的時候,應該將其從內存中刪除,以釋放它佔用的資源。 Drop procere 存儲過程名。 Drop procere update_info. 觸發器觸發器(trigger)是一些過程,與表聯系緊密,用於保護表中的數據,當一個基表被修改時,觸發器自動就會執行。例如出入其可以實現多個表間數據的一致性和完整性。一般情況下,對表數據的操作有增刪查改,維護數據的觸發器也可以分為多種,每張基表最多可以建立12個觸發器。 1:Before insert 2:before insert fo each row; 3:after inert 4:after insert for each row 5:before update 6:before update for each row 7:after update 8:after update for each row; 9:before delete; 10:before delete for each row 11:after delete 12:after delete for each row. 利用sql語句創建觸發器語法規則 Create or replace trigger 觸發器名 {before| after| instead of} {delete 【or insert】【or update】【of column ….n 】} On 表名|視圖名【for each row 】[]where condition]] Sql_statement[,,,n] 參數說明 Instead of :指定在創建替代觸發器。 Of column 指定在哪些列上進行觸發。。。創建觸發器的限制 1:觸發器中有效的語句可以包括DML語句,但是不能包括DDL,rollback,commit ,savepoint都不適用。

5. oracle資料庫的基本語法與SQL一樣嗎

sql語句基本相同,各廠商有自己新加語句,相似功能不同實現方法,所以某些語句有不同。

6. Oracle資料庫語法

創建表空間語法:
CREATE TABLESPACE TABLESPACE_NAME
DATAFILE '數據文件全名'
SIZE 數據文件初始長度;
例子:
CREATE TABLESPACE DATASPACETEST
DATAFILE
'D:\oracle\proct\10.2.0\oradata\orcl\data01.DBF'
SIZE 2000M;
刪除表空間語法:
DROP TABLESPACE TABLESPACE_NAME;
如:DROP TABLESPACE DATASPACETEST;
將表空間聯機語句:
ALTER TABLESPACE TABLESPACE_NAME ONLINE;
將表空間離線語句:
ALTER TABLESPACE TABLESPACE_NAME OFFLINE NORMAL;
創建用戶語法:
create user user_name
identified by "user_name"
default tablespace tablespace_name
temporary tablespace TEMP
profile DEFAULT;
例子:
create user HR
identified by "HR"
default tablespace DATASPACETEST
temporary tablespace TEMP
profile DEFAULT;
刪除用戶語法:
DROP USER USER_NAME CASCADE;
其中CASCADE表示級聯,即刪除用戶之前先刪除用戶所擁有的實體.
例子:
DROP USER HR CASCADE;

DESCRIBE < 對象名 >, 這個語法是描述查看對象的結構
例如:查看某表的結構DESC TABLE_NAME(DESC是DESCRIBE的簡寫);

下面分析你那創建表空間時的錯誤:
首先你要確定你原先已經創建過News.dbf此數據文件,
否則是不可以使用REUSE重用語法,
第二,NEXT10M這個NEXT與10M中間要空格.
這樣就可以了,我已經幫你測試過了
SQL> CREATE TABLESPACE "News"
2 DATAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\HCPDEMO\test01.dbf' SIZE 50M
3 AUTOEXTEND ON NEXT 10M MAXSIZE 100M
4 ONLINE
5 LOGGING;

Tablespace created

7. oracle 基本語法

DECLARE
X NUMBER := 10;
Y VARCHAR(20) := '10';
BEGIN
FOR I IN 1 .. 10 LOOP
INSERT INTO T1_TEST2 VALUES (X, '數據');
X := X + I;
END LOOP;
--為什麼加了y varchar(20):='10';就報錯呢
END;

肯定不會報錯,不過oracle中一般用varchar2,而不是varchar,當然這樣用不會報錯。
只不過insert後應該有commit才嚴謹。

8. Oracle的語法什麼

oracle是沒有語法什麼的,你說的那個叫 t-sql 這種語言是跟java和c#是不能拿來比較的. 比如你說的賦值 在t-sql中賦值可以是用 :: 來實現, 而且可以賦值 type類型,就是游標了. 還有for循環 loop . 雖然也是叫循環,但這個 for loop 只能在支持t-sql引擎的資料庫中(如oracle,微軟sql)進行數據循環處理,而不能做其他事情. java的循環,可以循環操作對象,新版的jdk還增強了for循環, C#的for循環也跟java一樣

9. oracle基本語法

查詢語句-select * from table;
select * from table where 條件1=數值 and 條件2=數值;
select * from table where id in (select id from table);兩表關聯
select a.a,b.b,c.c from table1 a,table2 b,table3 c where a.id1=b.id2;
插入語句-insert into table (欄位1,欄位2,欄位3,……)
values (數值1,數值2,數值3,……);
更新語句-update 表名 set 數值 where=id = 1;

添加列語句-alter table 表名
add (列名1 類型1,列名2 類型2,列名3 類型3,……);

查詢隨機20條記錄-select * from( select * from emp order by dbms_random.value) where rownum <= 10;
修改列類型-alter table 表名
modify (列名1 類型1,列名2 類型2,列名3 類型3,……);
刪除列語句-alter table 表名
drop column 列名s;
顯示查詢時間-set timing on;

刪除表語句-deltet table 表名;

清空表數據-truncate table 表名;

修改列名 - ALTER TABLE emp RENAME COLUMN comm TO newa;

集合查詢(無重復):select * from table_name union
select * from table_name;
集合查詢(有重復):select * from table_name union all
select * from table_name;
差 集 查 詢:select * from table_name minus
select * from table_name;

--------------------------------------------------------------------------------
運行腳本-start d:\文件名.sql;

編輯腳本-edit d:\文件名.sql;

另存為腳本-spool d:\文件.sql;
select * from emp;
spool off;

分頁顯示-set pagesize 頁數;

行數顯示-set linesize 行數;

創建用戶-create user 用戶名 identified by 密碼;(需要SYS/SYSTEM許可權才能建立用戶)
賦予許可權-grant resource to 用戶名;(建表許可權)
賦予查詢許可權-grant select on emp to 用戶名;
賦予修改許可權-grant update on emp to 用戶名;
賦予所有訪問許可權-grant all on emp to 用戶名;
--------------------------------------------------------
收回查詢許可權-revoke select on emp from 用戶名;
傳遞許可權-grant select on emp to 用戶名2 with grant option;
賬戶鎖定-
creata profile 名稱 limit failed_login_attcmpts 輸入次數限制 password_lock_time 鎖定天數;
------------------------------DBA許可權登錄
alter user 想要鎖定的用戶名 profile 名稱;
------------------------------DBA許可權登錄
解鎖用戶鎖定-alter user 用戶名 account unlock;
定期修改密碼-create profile 名字 limit password_life_time 天數 password_grace_time 寬限天數;

切換用戶-conn system/密碼;
更改密碼-password 用戶名;
刪除用戶-drop user 用戶名 cascade(刪除用戶及用戶建立的所有表);

查詢同樣結構兩表中的不同數據-select * from emp_tmp where empno not in(select empno from emp);

select * from v$session;
select * from v$version;

定義函數:
---------函數說明 函數是計算數字平方;
FUNCTION y2
(inx2 number)
return number is
Result number(2);
begin

Result := inx2*inx2;

return(Result);
end y2;

---------函數說明 函數是輸入漢字然後輸出拼音;
FUNCTION HZ
(inputStr in VARCHAR2)
RETURN VARCHAR2 iS
outputStr varchar2(10);
BEGIN
SELECT c_spell INTO outputStr FROM BASE$CHINESE WHERE C_WORD = inputStr;
RETURN outputStr;
END hz;
----------函數說明 函數是計算累加自然月;
FUNCTION month
(inmonth number,
inaddmonth number)
return varchar2 is
Result varchar2(6);
begin

Result :=substr(to_char(add_months(to_date(inmonth,'yyyymm'),inaddmonth),'yyyymmdd'),1,6);

return(Result);
end month;

select to_char(add_months(trunc(sysdate),-1),'yyyymmdd') from al;--取上個月的日期;
select to_char((sysdate-30),'yyyymmdd') from al; ---去當前日期前30天日期;

ORACLE 隨機數
DBMS_RANDOM.VALUE(low IN NUMBER,high IN NUMBER) RETURN NUMBER;
select round(dbms_random.value(x,x)) from al;

ORACLE 取當前時間並按毫秒計算
select systimestamp from al;

10. Oracle資料庫的語法求大神幫助理解下。

查詢ID和parentid 和menuname ,並且同時在ID和parentid後面拼接上『M』,且在拼接後的欄位重命名為 ID,parentid
解釋:as 為重命名 (可以省略不寫)
|| 為拼接,(如: 『a'||'b' 結果為:『ab』)