給你示例你參考下:
創(chuàng)新互聯(lián)公司是一家專注于成都做網站、成都網站設計與策劃設計,巴楚網站建設哪家好?創(chuàng)新互聯(lián)公司做網站,專注于網站建設十余年,網設計領域的專業(yè)建站公司;建站業(yè)務涵蓋:巴楚等地區(qū)。巴楚做網站價格咨詢:028-86922220
----------------------------建立存儲過程:
CREATE OR REPLACE PROCEDURE P_name--存儲過程名字
(
i_var in int, --輸入參數(shù)1
o_var OUT varchar2 --輸出參數(shù)1
)
IS
v_STR VARCHAR2(200); --定義存儲過程內部的局部變量
BEGIN
--下面是存儲過程的主體實現(xiàn)部分
v_STR := i_var;
dbms_output.put_line(v_STR);
o_var := v_STR;
exception--錯誤異常處理部分
when others then
dbms_output.put_line(sqlerrm);--打印錯誤信息
END P_name;
-----------------------------------調用存儲過程示例:
declare
v_in int;
v_out varchar2(50);
begin
v_in :=100;
P_name (v_in,v_out); --調用存儲過程P_name
dbms_output.put_line('存儲過程輸入結果為:'||v_out);
exception--錯誤異常處理部分
when others then
dbms_output.put_line(sqlerrm);--打印錯誤信息
end;
oracle創(chuàng)建序列基本語法:
CREATE?SEQUENCE?sequence??//創(chuàng)建序列名稱
[INCREMENT?BY?n]??//遞增的序列值是n?如果n是正數(shù)就遞增,如果是負數(shù)就遞減?默認是1
[START?WITH?n]????//開始的值,遞增默認是minvalue?遞減是maxvalue
[{MAXVALUE?n?|?NOMAXVALUE}]?//最大值
[{MINVALUE?n?|?NOMINVALUE}]?//最小值
[{CYCLE?|?NOCYCLE}]?//循環(huán)/不循環(huán)
[{CACHE?n?|?NOCACHE}];//分配并存入到內存中
oracle 存儲過程的基本語法
1.基本結構
CREATE OR REPLACE PROCEDURE 存儲過程名字
(
參數(shù)1 IN NUMBER,
參數(shù)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 循環(huán)
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.帶參數(shù)的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
連接數(shù)據(jù)庫后建立一個Test WINDOW
在窗口輸入調用SP的代碼,F9開始debug,CTRL+N單步調試
1.create user username identified by password;//建用戶名和密碼oracle ,oracle
2.grant connect,resource,dba to username;//授權 grant connect,resource,dba,sysdba to username;
3.connect username/password//進入。
4.select table_name,column_name from user_tab_columns where table_name='TABLE_NAME';//查詢表中的表名,字段名等等。 最后的table_name要大寫。
5. 如何執(zhí)行腳本SQL文件? SQL@PATH/filename.sql;
7.查詢用戶下的所有表 select distinct table_name from user_tab_columns; ===僅顯示一列表名。
8.如何搜索出前N條記錄?
select * from tablename where rownumn;--足矣。(--是注釋用的標記)
9.查找用戶下的所有表:select * from tab; --查詢該用戶下的所有表及視圖(顯示表名tname, 類型tabname和clusterid)
2、顯示當前連接用戶
SQL show user –不能用在sql窗口 只能用在command命令窗口。
3、查看系統(tǒng)擁有哪些用戶
SQL select * from all_users;
4、新建用戶并授權
SQL create user a identified by a;(默認建在SYSTEM表空間下)
SQL grant connect,resource to a;
5、連接到新用戶
SQL conn a/a –或者是connect a/a
6、查詢當前用戶下所有對象
SQL select * from tab; --table或是view
7、建立第一個表
SQL create table a(a number);
8、查詢表結構
SQL desc a
9、插入新記錄
SQL insert into a values(1);
10、查詢記錄
SQL select * from a;
11、更改記錄
SQL update a set a=2;
12、刪除記錄
SQL delete from a;
13、回滾
SQL roll;
SQL rollback;
14、提交
SQL commit;
select * from
(select t.*,dense_rank() over (order by cardkind) rank from cardkind t)
where rank = 2;
46. 如何在字符串里加回車?
select 'Welcome to visit'||chr(10)||'' from dual ; --‘||chr(10)||’作為換行符
53. 如何使select語句使查詢結果自動生成序號?
select rownum COL from table; --主要就是oracle中引入了rownum
54. 如何知道數(shù)據(jù)褲中某個表所在的tablespace?
select tablespace_name from user_tables where table_name='TEST'; --table_name名稱要大寫。
select * from user_tables中有個字段TABLESPACE_NAME,(oracle);
select * from dba_segments where …;
55. 怎么可以快速做一個和原表一樣的備份表?
create table new_table as (select * from old_table);
59. 請問如何修改一張表的主鍵?
alter table aaa drop constraint aaa_key ;
alter table aaa add constraint aaa_key primary key(a1,b1) ;
60. 改變數(shù)據(jù)文件的大小?
用 ALTER DATABASE .... DATAFILE .... ;
手工改變數(shù)據(jù)文件的大小,對于原來的 數(shù)據(jù)文件有沒有損害。
61. 怎樣查看ORACLE中有哪些程序在運行之中?
查看v$session表
62. 怎么可以看到數(shù)據(jù)庫有多少個tablespace?
select * from dba_tablespaces;
Oracle存儲過程基本語法:
CREATE?OR?REPLACE?PROCEDURE?存儲過程名?
IS?
BEGIN?
NULL;?
END;
解釋:
行1:?
CREATE OR REPLACE PROCEDURE 是一個SQL語句通知Oracle數(shù)據(jù)庫去創(chuàng)建一個叫做skeleton存儲過程, 如果存在就覆蓋它;?
行2:?
IS關鍵詞表明后面將跟隨一個PL/SQL體。?
行3:?
BEGIN關鍵詞表明PL/SQL體的開始。?
行4:?
NULL PL/SQL語句表明什么事都不做,這句不能刪去,因為PL/SQL體中至少需要有一句;?
行5:?
END關鍵詞表明PL/SQL體的結束。