Oracle備忘錄1,oracle備忘錄

來源:互聯網
上載者:User

Oracle備忘錄1,oracle備忘錄

資料庫管理員:安裝升級Oracle資料庫建庫,資料表空間,表,視圖,索引。。。制定並實施備份和修複計劃資料庫許可權管理,調優,故障排除對於進階DBA,要求參與項目開發,會編寫SQL語句,預存程序,觸發器,規則,約束,包CREATE TABLE EMP(EMPNO NUMBER(4) PRIMARY KEY,ENAME VARCHAR2(10),JOB VARCHAR2(9),MGR NUMBER(4),HIREDATE DATE,SAL NUMBER(7,2),COMM NUMBER(7,2),DEPTNO NUMBER(4));CREATE TABLE DEPT(DEPTNO NUMBER(4),DNAME VARCHAR2(14),LOC VARCHAR2(13));CREATE TABLE SALGRADE(GRADE NUMBER,LOSAL  NUMBER,HISAL NUMBER );CREATE TABLE BONUS(ENAME VARCHAR(10),JOB VARCHAR2(9),SAL NUMBER,COMM NUMBER);INSERT INTO DEPT VALUES (10,'ACCOUNTING','NEW YORK');INSERT INTO DEPT VALUES (20,'RESEARCH','DALLAS');INSERT INTO DEPT VALUES (30,'SALES','CHICAGO');INSERT INTO DEPT VALUES (40,'OPERATIONS','BOSTON');INSERT INTO EMP VALUES(7369,'SMITH','CLERK',7902,TO_DATE('17-12-1980','dd-mm-yyyy'),800,null,20);   INSERT INTO EMP VALUES(7499,'ALLEN','SALESMAN',7698,TO_DATE('20-2-1981','dd-mm-yyyy'),1600,300,30);INSERT INTO EMP VALUES(7521,'WARD','SALESMAN',7698,TO_DATE('22-2-1981','dd-mm-yyyy'),1250,500,30);INSERT INTO EMP VALUES(7566,'JONES','MANAGER',7839,TO_DATE('2-4-1981','dd-mm-yyyy'),2975,NULL,20);INSERT INTO EMP VALUES(7654,'MARTIN','SALESMAN',7698,TO_DATE('28-9-1981','dd-mm-yyyy'),1250,1400,30);INSERT INTO EMP VALUES(7698,'BLAKE','MANAGER',7839,TO_DATE('1-5-1981','dd-mm-yyyy'),2850,NULL,30);INSERT INTO EMP VALUES(7782,'CLARK','MANAGER',7839,TO_DATE('9-6-1981','dd-mm-yyyy'),2450,NULL,10);INSERT INTO EMP VALUES(7839,'KING','PRESIDENT',NULL,TO_DATE('17-11-1981','dd-mm-yyyy'),5000,NULL,10);INSERT INTO EMPVALUES(7788,'SCOTT','ANALYST',7566,'19-4月-1987',3000.00,NULL,20);INSERT INTO EMP VALUES(7844,'TURNER','SALESMAN',7698,TO_DATE('8-9-1981','dd-mm-yyyy'),1500,0,30);INSERT INTO EMP VALUES(7900,'JAMES','CLERK',7698,TO_DATE('3-12-1981','dd-mm-yyyy'),950,NULL,30);INSERT INTO EMP VALUES(7902,'FORD','ANALYST',7566,TO_DATE('3-12-1981','dd-mm-yyyy'),3000,NULL,20);INSERT INTO EMP VALUES(7934,'MILLER','CLERK',7782,TO_DATE('23-1-1982','dd-mm-yyyy'),1300,NULL,10);INSERT INTO SALGRADE VALUES (1,700,1200);INSERT INTO SALGRADE VALUES (2,1201,1400);INSERT INTO SALGRADE VALUES (3,1401,2000);INSERT INTO SALGRADE VALUES (4,2001,3000);INSERT INTO SALGRADE VALUES (5,3001,9999);SELECT * FROM DEPT;SELECT * FROM EMP;SELECT * FROM SALGRADE;CREATE USER  DB_USER IDENTIFIED BY DB_USER_PW;   ——建立資料庫/使用者,要在system下進行操作DROP USER  DB_USER (CASCADE);passw;   ——修改使用者密碼 passw DB_USER;    ——管理員修改使用者密碼ALTER USER  DB_USER IDENTIFIED BY DB_USER_PW;   ——管理員修改使用者密碼shutdown;startup;SHOW parameter;賦予許可權:前兩個要在system下進行操作方法1:GRANT DBA TO DB_USER;       ——賦予使用者資料庫系統管理權限方法2:GRANT CONNECT TO DB_USER;       ——賦予使用者串連許可權       GRANT RESOURCE TO DB_USER;         ——賦予使用者資源許可權方法3:CONNECT DB_USER/DB_USER_PW as sysdba或者as sysoper;   ——串連資料庫並賦予許可權GRANT CREATE SESSION TO DB_USER;    ——賦予使用者建立會話的許可權,對Oracle資料庫暫時不知道怎麼用CREATE USER  role NOT IDENTIFIED; ——建立角色時不需要輸入密碼即可登入 顯示資料庫中所有的使用者:SELECT USER NAME FROM dba_USER s;顯示資料庫中使用者的系統許可權:SELECT * FROM dba_sys_privs WHERE GRANTee='角色名稱;SELECT * FROM role_sys_privs WHERE role='角色名稱;顯示資料庫中使用者的對象許可權:SELECT * FROM dba_tab_privs WHERE GRANTee='角色名稱';    顯示資料庫中使用者的角色:SELECT * FROM dba_role_privs WHERE GRANTee='使用者名稱';顯示資料庫中使用者的許可權SELECT * FROM dba_sys_privs Oracle究竟有多少中角色SELECT * FROM dba_roles;Oracle的所有系統許可權SELECT * FROM system_privilege_map order BY NAME;Oracle的所有對象許可權SELECT DISTINCT privilege FROM dba_tab_privs;顯示當前資料庫的全稱:SELECT * FROM global_NAME;conn sys/change_on_install as sysdba;——作為系統資料庫管理員登入DROP TABLE r;       ——刪除表RENAME r TO r1;   ——重新命名表名ALTER TABLE r RENAME column A1 TO A2;    ——修改表中的列名ALTER TABLE r ADD A D;     ——增加列的屬性ALTER TABLE r MODIFY A D;     ——修改列的屬性ALTER TABLE r DROP A;        ——刪除列的屬性INSERT INTO r VALUES();          ——插入元組(表中內容)UPDATE TABLE r SET A WHERE ...;  ——更新元組(表中內容)DELETE FROM r WHERE ...;  ——刪除元組(表中內容),寫日誌,可恢複TRUNCATE TABLE r;__刪除元組(表中內容),速度快,不寫日誌,不可恢複SHOW linesize;  ——顯示行的寬度,預設值為80SET linesize NUMBER; ——設定行的寬度為NUMBER    SET pagesize NUMBER;  ——設定每頁顯示的行數,預設值為14ALTER SESSION SET nls_date_format='yyyy-mm-dd'; __日期設定成中國人習慣的方式NVL(D,0)  ——如何處理空值null--增加約束ALTER TABLE r MODIFY A NOT NULL;--非空ALTER TABLE r ADD CONSTRAINT cardunique UNIQUE(A); --身份證唯一ALTER TABLE r ADD CONSTRAINT ADDresscheck CHECK(A in('北京','上海','廣州'));--刪除約束ALTER TABLE r DROP CONSTRAINT A UNIQUE/CHECK;ALTER TABLE r DROP CONSTRAINT primary key CASCADE;UPDATE  r SET A WHERE ...;  ——更新元組(表中內容)UPDATE  r SET (a1,a2,a3)=(SELECT (A1,A2,A3) FROM r WHERE...) WHERE...;DELETE FROM r WHERE ...;  ——刪除元組(表中內容)顯示目前使用者下的所有表:SELECT TABLE_NAME FROM USER _TABLEs;顯示目前使用者可以訪問的所有的表:SELECT TABLE_NAME FROM all_TABLEs;顯示資料庫中全部的表,必須是dba或者具有SELECT any TABLE的許可權SELECT TABLE_NAME FROM dba_TABLEs;CREATE profile failed_login_lock_NAME limit failed_login_attEMPs num1 password_lock_time num2;   ——建立輸入密碼錯誤次數達到num1時鎖定規定時間num2CREATE profile password_life_time_NAME limit password_life_time num1 password_grace_time num2 password_reuse_time NUMBER3;  ——建立在num1修改密碼,寬限天為num2,在NUMBER3天后可以重用DROP profile profile_NAME(CASCADE);    ——刪除檔案ALTER USER  DB_USER profile profile_NAME;     ——對某使用者實行這一鎖定規則 ALTER USER  DB_USER account unclok;  ——進行解鎖 savapoint a;——設定復原點,儲存點,可預防資料庫重要訊息的丟失,儲存點個數沒有限制(可以設定多個復原點)ROLLBACK TO a;——復原到這個點ROLLBACK;——復原到最初的狀態COMMIT;——提交,每天都必須的操作,但是會刪除全部儲存點,釋放鎖,謹慎使用,使用時確保資料庫已經不存在問題!分頁:ROWNUM經典例句:SELECT * FROM (SELECT a.*,rownum rn FROM (SELECT * FROM EMP) a WHERE rownum<=10)  WHERE rn>=6;複製一部分:CREATE TABLE myTABLE(id,NAME) as SELECT EMPno,ename FROM EMP;UNION 合并查詢去重 UNION ALL  不去重INTERSECT 交集查詢MINUS  差集查詢,前面減去兩者的交集TO_DATE('1991-12-12','yyyy-mm-dd')     TO_DATE('1991/12/12','yyyy/mm/dd') ——指定日期格式INSERT INTO EMP VALUES(1235,'Test_2','MANAGER',7782,TO_DATE('1998-9-9 12:10:10','yyyy-mm-dd hh24:mi:ss'),1000,100,10);INSERT INTO EMP VALUES(1236,'Test_3','MANAGER',7782,sysdate,1000,100,10);SELECT ename,TO_CHAR(hiredate,'yyyy-mm-dd hh24:mi:ss') FROM EMP; ——查詢具體時間,小時,分鐘,秒,bbs系統常備SELECT ename,TO_CHAR(hiredate,'yyyy-mm-dd hh24:mi:ss'),TO_CHAR(sal,'L99,999.99') FROM EMP;  ——顯示本地貨幣SELECT * FROM EMP WHERE TO_CHAR(hiredate,'yyyy')=1980;  ——顯示某一年入職的員工,某一月mm,某一年中的某一月同理yyyy-mmSET TRANSLATE READ ONLY; ——交易處理集合函式:LOWER(A);UPPER(A);LENGTH(A);SUBSTR(A,m,n); ——m代表起始位置,n代表取得字元個數完成首字母大寫 ——SELECT UPPER(SUBSTR(A,1,1)) FROM EMP;完成後面字母小寫——SELECT lower(SUBSTR(A,2,LENGTH(A)-1)) FROM r;合并:SELECT UPPER(SUBSTR(A,1,1))||lower(SUBSTR(A,2,LENGTH(A)-1)) FROM r;REPLACE(A,search_string,REPLACE_string); ——替換字元INSTR(char1,char2,[,n[,m]]; ——取字串在字串的位置數學函數:ROUND(A,m); ——四捨五入,保留m位TRUNC(A,m);——截取數字,保留m位,忽略餘數MOD(A,n);——對A模數nFLOOR(A);——返回小於或者等於n的最大整數,忽略餘數CEIL(A);——返回大於或者等於n的最小整數SELECT SYSDATE FROM dual;——返回系統時間SELECT * FROM EMP WHERE sysdate>ADD_months(hiredate,8);返回系統時間8個月之前的員工SELECT trunc(sysdate-hiredate) "入職天數" FROM EMP;      ——返回入職天數SELECT hiredate,ename FROM EMP WHERE last_day(hiredate)-2=hiredate;  ——返回每月倒數第2天的員工轉換函式:TO_CHAR(A,'');   TO_DATE(A,'');系統函數:SELECT sys_context('USER env','db_NAME') FROM dual;               ——language:當前語言,SESSION_USER :目前使用者,current_schema:當前方案進行行遷移:INSERT INTO r2(A1,A2,A3) SELECT a1,a2,a3 FROM r1 WHERE ...;匯出:匯出表,匯出方案,匯出資料庫EXP命令,要從命令列進入oracle中的bin 目錄USER id,TABLEs,owner,full=y,inctype,rows,file匯出表的結構而不匯入資料:EXP USER id=learning/123456@XE TABLEs=(EMP) file=E:\DeskTop\EMP.dmp rows=n匯出表:EXP USER id=learning/123456@XE TABLEs=(EMP) file=E:\DeskTop\EMP.dmp下面這種方式匯出快EXP USER id=learning/123456@XE TABLEs=(EMP) file=E:\DeskTop\EMP.dmp direct=y匯出方案:EXP USER id=learning/123456@XE owner=learning file=E:\DeskTop\EMP.dmp匯出全部:EXP USER id=system/123456@XE full=y inctype=complete file=E:\DeskTop\EMP.dmp匯入表的結構,而不匯入表的資料:IMP USER id=learning/123456@XE TABLEs=(EMP) file=E:\DeskTop\EMP.dmp rows=n匯入表:IMP USER id=learning/123456@XE TABLEs=(EMP) file=E:\DeskTop\EMP.dmp匯入資料,如果表已經存在只匯入資料:IMP USER id=learning/123456@XE TABLEs=(EMP) file=E:\DeskTop\EMP.dmp ignore y匯入表到其他使用者IMP USER id=system/123456@XE TABLE=EMP file=E:\DeskTop\EMP.dmp TOUSER =learning;匯入資料庫:IMP USER id=system/123456@XE full=y file=E:\DeskTop\EMP.dmp TOUSER =learning;建立資料表空間:CREATE TABLESPACE data01 datafile 'E:\data01.dbf' size 20m uniform size 128k;增加資料檔案:ALTER TABLESPACE data01 ADD datafile 'E:\data02.dbf' size 20m;增加資料檔案的大小:ALTER TABLESPACE data01 'E:\data01.dbf' resize 20m;設定檔案的自動成長:ALTER TABLESPACE data01 'E:\data01.dbf' auTOextEND on next 10m maxsize 500m;磁碟損壞時的做法:確定資料檔案所在的資料表空間:SELECT TABLESPACE_NAME FROM dba_data_files WHERE file_NAME='E:\data01.dbf'; 使資料表空間離線:ALTER TABLESPACE data01 offline;移動資料表空間:host move E:\data01.dbf D:\data01.dbf對資料庫檔案進行邏輯修改:ALTER TABLESPACE data01 RENAME datafile 'E:\data01.dbf TO D:\data01.dbf';使得資料表空間聯機:ALTER TABLESPACE data01 online;使用資料庫資料表空間:CREATE TABLE r(deptno NUMBER(4),dNAME varchar2(14),loc varchar2(13)) TABLESPACE data01;查詢資料表空間中的表: SELECT * FROM all_TABLEs WHERE TABLESPACE_NAME='DATA01';//注意大寫查詢表處於哪個資料表空間:SELECT TABLESPACE_NAME,TABLE_NAME FROM USER _TABLEs WHERE TABLE_NAME='EMP'; //注意大寫刪除資料表空間:DROP TABLESPACE DATA01 including contents and datafiles;表級定義:在定義了列之後添加約束列級定義:在定義列的同時添加約束建立一個預存程序,該過程可以向某表中添加記錄CREATE TABLE mytest(name VARCHAR2(30),password VARCHAR2(30));CREATE OR REPLACE  PROCEDURE b ISBEGIN--執行部分INSERT INTO mytest VALUES('jack','123456');END;/CREATE OR REPLACE  PROCEDURE b ISBEGIN--執行部分DELETE FROM mytest WHERE name='jack';END;/REPLACE表示如果有相同的過程名就替換,b表示過程名查看錯誤資訊:SHOW error;如何調用該過程1:EXEC 過程名(參數值1,參數值2);2:CALL 過程名(參數值1,參數值2);定義常量時,建議用v_作為首碼v_sal定義常量時,建議用c_作為首碼c_rate當定義遊標時,建議用_cursor作為尾碼EMP_cursor當定義例外時,建議用e_作為首碼e_errorSET serveroutput ON;--開啟顯示內容  SET serveroutput OFF--關閉顯示內容BEGINDBMS_OUTPUT.PUT_LINE('helloworld');END; /--這個最後在加上--顯示僱員名,薪水DECLAREv_ename VARCHAR2(5);v_sal NUMBER(7,2);BEGIN SELECT ename,sal INTO v_ename,v_sal FROM EMP WHERE EMPno=&no;--輸出DBMS_OUTPUT.PUT_LINE('僱員是:'||v_ename||',他的薪水是:'||v_sal);--異常處理EXCEPTIONWHEN NO_DATA_FOUND THENDBMS_OUTPUT.PUT_LINE('輸入有誤,請重新輸入!');END;/案例CREATE PROCEDURE a1(a1name VARCHAR2,a1sal NUMBER) ISBEGIN--執行,根據故原名修改工資UPDATE EMP SET sal=a1sal WHERE ename=a1name; END;/EXEC a1('SCOTT',150);--這樣SCOTT的工資就被修改成了150--採用function來查詢某個僱員的工資CREATE FUNCTION fj_fun1(fjname VARCHAR2) RETURN NUMBER IS yearsal NUMBER(7,2);BEGIN--執行部分SELECT sal*12+NVL(comm,0)*12 INTO yearsal FROM EMP WHERE ename=fjname;RETURN yearsal;END;/--調用VAR abc NUMBER;CALL  fj_fun1('SCOTT') INTO:abc;--建立包。聲明該包有一個過程update_sal,聲明該包有一個函數annual_income:CREATE PACKAGE fj_package ISPROCEDURE update_sal(name VARCHAR2,newsal NUMBER);FUNCTION annual_income(name VARCHAR2) return NUMBER;END;/--給包sp_package實現包體 ,來修改某個僱員的工資或者查詢某個僱員的工資CREATE OR REPLACE PACKAGE BODY fj_package IS PROCEDURE update_sal(name VARCHAR2, newsal NUMBER) IS BEGIN UPDATE EMP SET sal = newsal WHERE ename = name; END; FUNCTION annual_income(name VARCHAR2) RETURN NUMBER IS annual_salary NUMBER; BEGIN SELECT sal * 12 + NVL(comm, 0) INTO annual_salary FROM EMP WHERE ename = name; RETURN annual_salary; END; END; / --調用CALL fj_package.update_sal('SCOTT', 1400);--輸入員工號,顯示僱員姓名、工資、個人所得稅,稅率為0.03為例DECLARE c_tax_rate NUMBER(3,2):=0.03;v_name VARCHAR2(5);--EMP.ename%TYPEv_sal NUMBER(7,2);--EMP.sal%TYPEv_tax_sal NUMBER(7,2);BEGIN--執行SELECT ename,sal INTO v_name,v_sal FROM EMP WHERE EMPno=&no;--計算個人所得稅v_tax_sal:=v_sal*c_tax_rate;--注意冒號--輸出DBMS_OUTPUT.PUT_LINE('僱員是:'||v_name||',工資是:'||v_sal||',需要交的個人所得稅是:'||v_tax_sal);END;/--類似於進階語言中的結構體--PL/SQL記錄執行個體DECLARE --表示要定義一個PL/SQL記錄類型 EMP_record_type,類型包含name,salary,titleTYPE EMP_record_type IS RECORD(name EMP.ename%TYPE,salary EMP.sal%TYPE,title EMP.job%TYPE);--定義了一個變數,這個變數的類型是EMP_record_typefj_record EMP_record_type;--v_name VARCHAR2(45);BEGINSELECT ename,sal,job INTO fj_record FROM EMP WHERE EMPno=7788;DBMS_OUTPUT.PUT_LINE('員工名:'||fj_record.name||',工資是:'||fj_record.salary);END;/--相當於進階語言中的數組DECLARE--定義了一個PL/SLQL表類型,該類型是用於存放EMP.ename%TYPETYPE fj_TABLE_type IS TABLE OF EMP.ename%TYPEINDEX BY BINARY_INTEGER;--代表下標是按整數排序的,可以為負數fj_TABLE fj_TABLE_type;BEGIN SELECT ename INTO fj_TABLE(0) FROM EMP WHERE EMPno=7788;DBMS_OUTPUT.PUT_LINE('員工名:'||fj_TABLE(0));--下標跟上面的下標一樣END;/DECLARE--定義了一個PL/SLQL表類型,該類型是用於存放EMP.ename%TYPETYPE fj_TABLE_type IS TABLE OF EMP.ename%TYPEINDEX BY BINARY_INTEGER;--代表下標是按整數排序的,可以為負數fj_TABLE fj_TABLE_type;BEGIN SELECT ename INTO fj_TABLE(0) FROM EMP;DBMS_OUTPUT.PUT_LINE('員工名:'||fj_TABLE(0));--下標跟上面的下標一樣END;/--輸入部門號,顯示該部門所有員工姓名和他的工資DECLARE --定義遊標類型fj_EMP_cursorTYPE fj_EMP_cursor IS REF CURSOR;--定義遊標變數test_cursor fj_EMP_cursor;--定義變數v_ename EMP.ename%TYPE;v_sal EMP.sal%TYPE;BEGIN--執行--把test_cursor和一個SELECT結合OPEN test_cursor FOR SELECT ename,sal FROM EMP WHERE deptno=&no;--迴圈取出LOOPFETCH test_cursor INTO v_ename,v_sal;--判斷是否test_cursor是否為空白EXIT WHEN test_cursor%NOTFOUND;DBMS_OUTPUT.PUT_LINE('僱員名是:'||v_ename||',薪水'||v_sal);END LOOP;END;/--在上面的基礎上,如果某個僱員的工資低於200元,就增加100元DECLARE --定義遊標類型fj_EMP_cursorTYPE fj_EMP_cursor IS REF CURSOR;--定義遊標變數test_cursor fj_EMP_cursor;--定義變數v_ename EMP.ename%TYPE;v_sal EMP.sal%TYPE;BEGIN--執行--把test_cursor和一個SELECT結合OPEN test_cursor FOR SELECT ename,sal FROM EMP WHERE deptno=&no;--迴圈取出LOOPFETCH test_cursor INTO v_ename,v_sal;--判斷工資高低,決定是否更新--判斷是否test_cursor是否為空白EXIT WHEN test_cursor%NOTFOUND;DBMS_OUTPUT.PUT_LINE('僱員名是:'||v_ename||',薪水'||v_sal);END LOOP;END;/--編寫一個過程,輸入僱員名,工資低於2000的僱員工資增加10%CREATE OR REPLACE PROCEDURE fj_pro6(fjname VARCHAR2) IS--定義v_sal EMP.sal%TYPE;BEGIN--執行SELECT sal INTO v_sal FROM EMP WHERE ename=fjname;--判斷IF v_sal<2000 THENUPDATE EMP SET sal=sal*1.1 WHERE ename=fjname;END IF;END;/--調用EXEC fj_pro6('SCOTT');--僱員如果補助為零則加200,如果不為零則加100CREATE OR REPLACE PROCEDURE fj_pro7(fjname VARCHAR2) IS--定義v_comm EMP.comm%TYPE;BEGIN--執行SELECT comm INTO v_comm FROM EMP WHERE ename=fjname;--判斷IF v_comm<>0 THENUPDATE EMP SET comm=comm+100 WHERE ename=fjname;ELSE UPDATE EMP SET comm=comm+200 WHERE ename=fjname;END IF;END;/--調用EXEC fj_pro7('SCOTT');--三個條件分支 IF-THEN-ELSEIF-ELSE--輸入僱員編號,如果該僱員的職位是PRESIDENT就給他的工資增加1000,如果該僱員的職位是MANAGER就給他的工資增加500,其它職位的僱員工資增加200。 CREATE OR REPLACE PROCEDURE fj_pro8(fjno NUMBER) IS--定義v_job EMP.job%TYPE;BEGIN--執行SELECT job INTO v_job FROM EMP WHERE EMPno=fjno;IF v_job='PRESIDENT' THENUPDATE EMP SET sal=sal+1000 WHERE EMPno=fjno;ELSIF v_job='MANAGER' THENUPDATE EMP SET sal=sal+500 WHERE EMPno=fjno;ELSEUPDATE EMP SET sal=sal+200 WHERE EMPno=fjno;END IF;END;/--調用EXEC fj_pro8(7839);--迴圈語句 LOOP--users表中,使用者編號從1開始增加CREATE TABLE users(userno NUMBER,username VARCHAR2(40));CREATE OR REPLACE PROCEDURE fj_pro9(fjname VARCHAR2) IS--定義:=表示賦值v_num NUMBER:=1;BEGINLOOPINSERT INTO users VALUES(v_num,fjname);--判斷允出準則EXIT WHEN v_num=10;--自增v_num:=v_num+1;END LOOP;END;/--調用EXEC fj_pro9('root1');--這樣表中會有十個username為root1的元組CREATE OR REPLACE PROCEDURE fj_pro10(fjname VARCHAR2) IS--定義:=表示賦值v_num NUMBER:=11;BEGINWHILE v_num<=20 LOOPINSERT INTO users VALUES(v_num,fjname);v_num:=v_num+1;END LOOP;END;/--調用EXEC fj_pro10('root1');

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.