Oracle
查询版本
SELECT *
FROM V$VERSION;
创建用户、赋权
ALTER SESSION SET "_ORACLE_SCRIPT"= TRUE;
CREATE USER xiaoming IDENTIFIED BY 123456;
GRANT CONNECT, RESOURCE TO xiaoming;
ALTER USER xiaoming QUOTA UNLIMITED ON USERS;
将当前用户的表权限赋予另一个用户
GRANT SELECT, INSERT, UPDATE, DELETE ON Schema.TableNmae TO AnotherSchema;
GRANT SELECT ON Schema.SEQ_XXX TO AnotherSchema;
批量赋权:
BEGIN
FOR UT IN (SELECT TABLE_NAME FROM USER_TABLES)
LOOP
EXECUTE IMMEDIATE 'GRANT SELECT, INSERT, UPDATE, DELETE ON ' || UT.TABLE_NAME || ' TO AnotherSchema';
END LOOP;
END;
建表
CREATE TABLE STUDENT
(
ID NUMBER GENERATED AS IDENTITY CONSTRAINT PK_STD_ID PRIMARY KEY,
STUDENT_ID VARCHAR2(32),
GENDER CHAR(1) CONSTRAINT CK_GENDER CHECK ( GENDER IS NULL OR GENDER = 'M' OR GENDER = 'F'),
ONE_FK NUMBER CONSTRAINT FK_ONE_FK REFERENCES AnotherTable(ID) NOT NULL,
CREATE_TIME DATE DEFAULT SYSDATE
);
CREATE UNIQUE INDEX UK_STUDENT_ID ON STUDENT (STUDENT_ID);
COMMENT ON TABLE STUDENT IS '学生表';
COMMENT ON COLUMN STUDENT.STUDENT_ID IS '学号';
RECORD 与 VARRAY 的用法
BEGIN
DECLARE
TYPE RECORD_TYPE IS RECORD
(
FIELD_1 NUMBER(10),
FIELD_2 SYS.XXX.ID%TYPE,
FIELD_3 SYS.XXX.NAME%TYPE
);
TYPE VARRAY_TYPE IS VARRAY(1000) OF RECORD_TYPE;
V_RT RECORD_TYPE;
V_ARR VARRAY_TYPE := VARRAY_TYPE();
BEGIN
FOR REC IN (SELECT ROWNUM, A, B, C,
FROM XXX)
LOOP
V_ARR.EXTEND;
V_ARR(REC.ROWNUM).FIELD_1 := REC.A;
V_ARR(REC.ROWNUM).FIELD_2 := REC.B;
V_ARR(REC.ROWNUM).FIELD_3 := REC.C;
END LOOP;
FOR V_INDEX IN V_ARR.FIRST .. V_ARR.LAST
LOOP
V_RT := V_ARR(V_INDEX);
DBMS_OUTPUT.PUT_LINE(V_RT.FIELD_1);
END LOOP;
END;
END;