--查找数据库脚本中汉字全角字符 SELECT * FROM ALL_SOURCE WHERE LENGTH(TEXT) != LENGTHB(TEXT) AND TEXT LIKE '%''%'; --ORACLE 常用FUNTION ----行转列 开始---- SELECT U_ID, WMSYS.WM_CONCAT(GOODS) GOODS_SUM FROM SHOPPING GROUP BY U_ID ; SELECT U_ID, WMSYS.WM_CONCAT(GOODS || '(' || NUM || '斤)' ) GOODS_SUM FROM SHOPPING GROUP BY U_ID ; SELECT SKUNO, ROUTEID, ROUTE FROM (SELECT VAR_SEARCHDATA AS SKUNO, ROUTEID, LISTAGG(EVENTPOINT, '->') WITHIN GROUP(ORDER BY ROUTEID, EVENTSEQNO) AS ROUTE FROM SFCROUTEDEFB WHERE ROUTEID IN (SELECT SFCROUTE FROM SFCCODELIKE WHERE SKUNO = VAR_SEARCHDATA) GROUP BY ROUTEID) WHERE ROWNUM BETWEEN TO_NUMBER(VAR_STARTINDEX) AND TO_NUMBER(VAR_ENDINDEX); ----行转列 结束---- LEFT(ARG,LENGTH)、RIGHT(ARG,LENGTH) --LEFT、RIGHT函数返回ARG最左边、右边的LENGTH个字符串,ARG可以是CHAR或BINARY STRING。 INSTR('源字符串' , '目标字符串' ,'开始位置(缺省默认为 1)','第几次出现(缺省默认为 1)') --查找字符串中是否存在某一字符,存在就返回位置的索引,不存在则返回0 。 NVL(EXPR1,EXPR2); --判断字符串是否为空,如果为空,返回指定值,不为空直接返回;如果EXPR1为NULL,返回EXPR2的值,否则返回EXPR1的值 LOWER(CHAR); --把字符串转换为小写格式; UPPER(CHAR); --把字符串转换为大写格式; LENGTH(CHAR) ; --返回字符串的字符个数 (每个中文占一个1个字符); LENGTHB(CHAR); --返回字符串的字节个数 (每个中文占一个2个字节); SUBSTR(CHAR,M,N); --截取字符串的字串; REPLACE(CHAR,SEARCH_CHAR,REPLACE_STR);--把字符串中的某个字符替换为指定的字符; TO_NUMBER(CHAR)--将字符串转换为NUMBER -----ORACEL 数学FUNCTION------ ROUND(N,[M])--四舍五入,省略M则四舍五入到整数位,M为小数点的位数; TRUNC(N,[M])--保留小数位,M为小数位的个数; (截取日期或数字) MOD(N,M) --取余; FLOOR(N) --返回小于等于N的最大整数; CEIL(N) --返回大于等于N的最小整数; ABS(N) --返回数字N的绝对值。 -----ORACEL 数学FUNCTION----- -----ORACEL 时间FUNCTION----- SYSDATE--该函数返回系统时间,精确到秒。 SYSTIMESTAMP--系统时间,精确到微妙。 ADD_MONTHS(DATE,N)--某一时间过了N个月后的时间,返回时间。 LAST_DAY(D)--返回当前日期该月的最后一天。 NEXT_DAY(SYSDATE,N)--当前时间的下N天,N必须为大于或等于1的正数。 TO_TIMESTAMP(TIMESTAMP_VARCHAR)--将时间戳字符转换为时间戳(TIMESTAMP)数据格式。 TO_DATE('2017-10-13','YYYY-MM-DD')--字符串转为日期格式(DATE); -----ORACEL 时间FUNCTION----- -----ORACLE中日期和字符串互相转换 ----- TO_CHAR()--把数据转换为字符串类型:TO_CHAR(字符串,类型); --1.日期转换 SELECT TO_CHAR(SYSDATE,'YYYY/MM/DD HH24:MI:SS') FROM DUAL; --2.显示1980年入职的员工信息 SELECT * FROM EMP WHERE TO_CHAR(EMP.HIREDATE,'YYYY')=1980; -----ORACLE中日期和字符串互相转换 ----- ----- ORACLE中的系统函数:SYS_CONTEXT(); ----- --1) TERMINAL 当前会话客户所对应的终端标识符 SELECT SYS_CONTEXT('USERENV','TERMINAL') FROM DUAL; --2) LANGUAGE 语言 SELECT SYS_CONTEXT('USERENV','LANGUAGE') FROM DUAL; --3)DB_NAME 当前的数据库实例名称 SELECT SYS_CONTEXT('USERENV','DB_NAME') FROM DUAL; --4)SESSION_USER 当前会话所对应的数据库 SELECT SYS_CONTEXT('USERENV','SESSION_USER') FROM DUAL; --5)CURRENT_SCHEMA:查看当前方案 SELECT SYS_CONTEXT('USERENV','CURRENT_SCHEMA') FROM DUAL; ----- ORACLE中的系统函数:SYS_CONTEXT(); ----- ----- ORACLE部分函数 ----- CAST(VALUE AS DATA_TYPE)--数据类型转换,【VALUE】为需要转换的值,【DATA_TYPE】为需要转换的数据类型(如:VARCHAR(20) , NUMBER , DECIMAL)。 DECODE(条件,值1,返回值1,值2,返回值2,...值N,返回值N,缺省值) --当(条件)的值等于(值1),则返回(返回值1);等于(值2),则返回(返回值2);等于(值N),则返回(返回值N);如都不相等,则返回(缺省值)。与(CASE WHEN THEN END)的用法相似。 SIGN(NUMBER)--NUMBER 是0、正数还是负数,分别返回0、1、-1 SELECT LPAD('123',5,'T') FROM DUAL --返回(TT123),左填充 SELECT RPAD('123',5,'@') FROM DUAL --返回(123@@),右填充 CONVERT (CHAR,CHAR_SET,[SOURCE_CHAR_SET])--ORACLE中字符集转换。 --【CHAR】参数是要转换的值。它可以是任何的数据类型CHAR , VARCHAR2 , NCHAR , NVARCHAR2 ,CLOB或NCLOB 。 --【CHAR_SET】参数是【CHAR】转换的字符集的名称。 --【SOURCE_CHAR_SET】参数是【CHAR】存储在数据库中的字符集名称,默认是数据库的字符集,可缺省。 -- ORACLE常用字符集: UTF8 , ZHS16GBK , US7ASCII …… ASCIISTR(CHAR)-- 用于返回字符的ASCII形式的字符串 ; ASCII(CHAR)-- 返回单个字符的ASCII 值 ; ----- ORACLE函数 ----- -----ORACEL 数据表的部分操作 ----- 2018-02-27 ALTER TABLE TABLENAME RENAME COLUMN OLDCNAME TO NEWCNAME;-- 修改字段名 ALTER TABLE TABLENAME MODIFY (CLOUMNNAME 数据类型); -- 修改数据类型 -----ORACEL 数据表的部分操作----- -----ORACEL 存储过程规范和注意事项----- --1.每一句SQL必须以分号 【;】结束。 --2.变量声明无需关键词【DECLARE】和标识【@】(与SQL SERVER 不同)。 --3.变量赋值 VARIABLE := 'HELLO' , 赋值标识符【:=】(与SQL SERVER 需标识SET 关键词 不同)。 --4.BEGIN END 只需在存储过程正文前后标识,其他分支可不标识 (与SQL SERVER 每段分支都必须标识 不同)。 --5. VARIABLE := 'HELLO' || 'WORLD' 字符串拼接,关键字符【||】。 --6. 判断两个数值是否相等,关键字符【=】 (与SQL SERVER 使用两个等号 == 不同) IF A = B THEN END IF --7. IF 语句格式 IF VARIABLE1 >= 10 AND VARIABLE1 < 50 THEN VARIABLE2 := VARIABLE1 + VARIABLE2; VARIABLE3 := 'OK'; ELSE VARIABLE2 := VARIABLE1 - VARIABLE2; VARIABLE3 := 'FAIL'; END IF; --8. 文本输出,【VAR_MSG】为需要输出的文本。 DBMS_OUTPUT.PUT_LINE(VAR_MSG); --9. LOOP 循环 DECLARE VAR_COUNT INT; VAR_COUNTER INT; BEGIN VAR_COUNT := 100 ; VAR_COUNTER :=0; LOOP VAR_COUNT := VAR_COUNT - 1 ; VAR_COUNTER := VAR_COUNTER + 1; DBMS_OUTPUT.PUT_LINE(TO_CHAR( SYSTIMESTAMP,'YYYY-MM-DD HH24:MI:SS:FF') || ' ' || VAR_COUNTER); EXIT WHEN VAR_COUNT < 1; ---- 跳出循环,关键词【EXIT WHEN】 END LOOP; END; --10. WHILE 循环 WHILE 条件语句 LOOP BEGIN END; END LOOP; --11. FOR 循环 , 如下CASE 为循环遍历游标 FOR ITEM IN CURSOR LOOP BEGIN DBMS_OUTPUT.PUT_LINE(ITEM); END; END LOOP; --12. 把查找的结果【COLUMNNAME】赋值给变量【VARIABLE】。 SELECT COLUMNNAME INTO VARIABLE FROM TABLENAME WHERE ROWNUM = 0 --13. GOTO 使用 , 跳转位置的字符需用【<<>>】标注起来。 GOTO EXITTAG <<EXITTAG>> --14.删除存储过程 DROP PROCEDURE MES1.WMS_MATERIELALLOT_SP --15. TOAD 中SQL执行存储过程 (如下例子为执行MES转换工单的存储过程) DECLARE VAR_O_MESSAGE VARCHAR2 (5000); VAR_WO_PREFIX VARCHAR2 (100); VAR_LASTEDITBY VARCHAR2 (100); VAR_DATA1 VARCHAR2 (100); VAR_DATA2 VARCHAR2 (100); VAR_DATA3 VARCHAR2 (100); VAR_DATA4 VARCHAR2 (100); BEGIN AP.R_AUTO_CONVERT_WO ( VAR_O_MESSAGE ,VAR_WO_PREFIX, VAR_LASTEDITBY , VAR_DATA1, VAR_DATA2 , VAR_DATA3 ,VAR_DATA4 ) ; COMMIT ; ---- 提交执行 END ; --16. 查询存储过程的参数 (ALL_ARGUMENTS 为系统视图) SELECT * FROM ALL_ARGUMENTS WHERE OBJECT_NAME = 'WH_WEBUTILITY_SP' ORDER BY SEQUENCE --17.C#调用存储过程获取输出参数时 ,如获取到输出参数为空值,先检查定义输出参数的大小,可以尝试把参数的大小改为不大于2000,然后再进行调试。 --当输出参数的大小定义比较小或没有定义,而存储过程输出较长字符串时,也会引发异常,如(ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小)。 --18. ORACLE 用户自定义异常处理 DECLARE V_EMPNO EMPLOYEES.EMPLOYEE_ID%TYPE :=&EMPNO; VAR_ERROR EXCEPTION;--1、定义异常 BEGIN UPDATE EMPLOYEES SET SALARY = SALARY+100 WHERE EMPLOYEE_ID = V_EMPNO; IF SQL%NOTFOUND THEN RAISE VAR_ERROR;--2、抛出异常 END IF; EXCEPTION WHEN VAR_ERROR THEN--3、处理异常 DBMS_OUTPUT.PUT_LINE('你的数据更新语句失败了!'); ROLLBACK; WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE(SQLCODE||'---'||SQLERRM); ROLLBACK;-- 事物回滚 END; -----ORACEL 存储过程规范和注意事项----- ----------TOAD 常用快捷键---------- 2017/11/17 1、TOAD 如何进行表分析? (1)选中表名按F4,然后弹出对话框有个按钮叫ANALYZE TABLE,点击后按绿色的三角符号 (2)进行表分析的作用是整理索引,提高执行效率 2、TOAD中如何查看SQL的执行计划 (1)通过TOAD中的RUN EXPLAIN PLAN FOR CURRENT STATEMENT或者通过快捷键CTRL+E来看 3、TOAD中常用快捷键 F4 看表的结构 F5 执行对话框中的SQL,注意最后需要以;结尾 F7 清除当前编辑框中所有的SQL F8 查看历史的SQL语句 F9 执行当前行的SQL F10 看菜单 CTRL + F12 保存SQL为文档 CTRL +. 补全TABLE_NAME CTRL + T 补全TABLE_NAME,或者显示字段 CTRL + E 查看当前SQL的执行计划 CTRL+ENTER 直接执行当前SQL CTRL+SHIFT+F 格式化SQL语句 ALT+箭头上下 看SQL HISTORY CTRL+F 查找 CTRL+R 替换 要全部替换需要选中对话框中的ENTIRE SCOPE CTRL+U 将选中SQL语句全部大写 CTRL+L 将选中SQL语句全部小写 CTRL+B 将选中SQL语句语句注释,COMMET BLOCK CTRL+SHIFT+B 将选中SQL语句取消注释,UNCOMMET BLOCK 4、如何在TOAD中设置快捷键 VIEW -->TOAD OPTIONS --> AUTO REPLACE --> IMPORT 导入一个TEXT文件设置一批快捷键 --文件中的内容:例如将S设置为SELECT * FROM 则 S=SELECT * FROM VIEW -->TOAD OPTIONS --> AUTO REPLACE --> ADD 增加一个快捷键 ----------TOAD 常用快捷键----- ----------ORACLE 应知应会----- UNION : 获取联集数据 ; ( 如: SELECT * FROM TABLE1 UNION SELECT * FROM TABLE2 ) MINUS : 去掉重复的数据 ; ( 如: SELECT COLUMN1 FROM TABLE1 MINUS SELECT COLUMN2 FROM TABLE2 ) INTERSECT : 获取交集的数据 ; ( 如: SELECT * FROM TABLE1 INTERSECT SELECT * FROM TABLE2 ) SQLERRM(ERROR_NUMBER) : 返回指定错误代码的错误信息。参数【ERROR_NUMBER】可选。 SQLCODE :数据库操作的返回码,其中0--成功;-1--失败;100--未找到任何数据。 DBMS_UTILITY.FORMAT_ERROR_BACKTRACE() :返回错误行 (ORACLE 10G及以上版本) WINDOWS CMD 连接ORACLE 数据库 : SQLPLUS 用户名/密码@数据库名 (如: SQLPLUS HETMID/HETMID@MESDB ) SELECT F1,F2,F3 INTO V1,V2,V3 FROM TAB1;--ORACLE INTO 多个变量 ESCAPE 'ESCAPE_CHARACTER' --允许在字符串中搜索通配符而不是将其作为通配符使用。ESCAPE_CHARACTER 是放在通配符前表示此特殊用途的字符。 SELECT * FROM USER WHERE NAME LIKE '%AA/%BB%' ESCAPE '/' -- 第一个和最后一个%作为通配符,中间的%作为普通字符 。 ESCAPE '/' --定义[/]为转义符 。 ESCAPE '=' --定义[=]为转义符 。 ESCAPE ' ' --定义空格为转义符 。 --P.S:第一个和最后一个%作为通配符,中间的%作为普通字符。 SELECT * FROM DBA_TAB_PRIVS WHERE TABLE_NAME = 'C_STATION_RULE' AND GRANTEE = 'HETUSER' -- 查看用户:HETUSER 在表:C_STATION_RULE 中的操作权限 SELECT * FROM DBA_OBJECTS WHERE OBJECT_NAME = 'EUSER' -- 查询一个对象的基本信息,如查表:EUSER 的基本信息 --DUAL : ORACLE提供的最小的工作表,只有一行一列,具有某些特殊功用 。(俗称:傀儡表) SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') FROM DUAL;-- 获得当前系统时间 SELECT SYS_CONTEXT('USERENV','TERMINAL') FROM DUAL; -- 获得主机名 SELECT SYS_CONTEXT('USERENV','LANGUAGE') FROM DUAL; -- 获得当前LOCALE SELECT DBMS_RANDOM.RANDOM FROM DUAL; -- 获得一个随机数 --复制表或数据 CREATE TABLE TABLE_NAME_NEW AS SELECT * FROM TABLE_NAME_OLD ; --复制表结构及其数据 CREATE TABLE TABLE_NAME_NEW AS SELECT * FROM TABLE_NAME_OLD WHERE 1=2 ; --只复制表结构 INSERT INTO TABLE_NAME_NEW SELECT * FROM TABLE_NAME_OLD ; --只复制表数据,如果两个表结构一样 INSERT INTO TABLE_NAME_NEW(COLUMN1,COLUMN2...) SELECT COLUMN1,COLUMN2... FROM TABLE_NAME_OLD ;--只复制表数据,如果两个表结构不一样 ----------ORACLE 应知应会----- SELECT COUNT (*) FROM MFWORKSTATUS @MESDB ---- ORACLE DB LINK 使用 (【@MESDB】 为DB LINK) 【1】DBA_开头..... DBA_USERS 数据库用户信息 DBA_SEGMENTS 表段信息 DBA_EXTENTS 数据区信息 DBA_OBJECTS 数据库对象信息 DBA_TABLESPACES 数据库表空间信息 DBA_DATA_FILES 数据文件设置信息 DBA_TEMP_FILES 临时数据文件信息 DBA_ROLLBACK_SEGS 回滚段信息 DBA_TS_QUOTAS 用户表空间配额信息 DBA_FREE_SPACE 数据库空闲空间信息 DBA_PROFILES 数据库用户资源限制信息 DBA_SYS_PRIVS 用户的系统权限信息 DBA_TAB_PRIVS 用户具有的对象权限信息 DBA_COL_PRIVS 用户具有的列对象权限信息 DBA_ROLE_PRIVS 用户具有的角色信息 DBA_AUDIT_TRAIL 审计跟踪记录信息 DBA_STMT_AUDIT_OPTS 审计设置信息 DBA_AUDIT_OBJECT 对象审计结果信息 DBA_AUDIT_SESSION 会话审计结果信息 DBA_INDEXES 用户模式的索引信息 DBA_DB_LINKS DB LINK DBA_SOURCE 存储过程、函数、包等对象的SQL语句。 【2】USER_开头 USER_OBJECTS 用户对象信息 USER_SOURCE 数据库用户的所有资源对象信息 USER_SEGMENTS 用户的表段信息 USER_TABLES 用户的表对象信息 USER_TAB_COLUMNS 用户的表列信息 USER_CONSTRAINTS 用户的对象约束信息 USER_SYS_PRIVS 当前用户的系统权限信息 USER_TAB_PRIVS 当前用户的对象权限信息 USER_COL_PRIVS 当前用户的表列权限信息 USER_ROLE_PRIVS 当前用户的角色权限信息 USER_INDEXES 用户的索引信息 USER_IND_COLUMNS 用户的索引对应的表列信息 USER_CONS_COLUMNS 用户的约束对应的表列信息 USER_CLUSTERS 用户的所有簇信息 USER_CLU_COLUMNS 用户的簇所包含的内容信息 USER_CLUSTER_HASH_EXPRESSIONS 散列簇的信息 USER_JOBS JOB 信息 【3】V$开头 V$DATABASE 数据库信息 V$DATAFILE 数据文件信息 V$CONTROLFILE 控制文件信息 V$LOGFILE 重做日志信息 V$INSTANCE 数据库实例信息 V$LOG 日志组信息 V$LOGHIST 日志历史信息 V$SGA 数据库SGA信息 V$PARAMETER 初始化参数信息 V$PROCESS 数据库服务器进程信息 V$BGPROCESS 数据库后台进程信息 V$CONTROLFILE_RECORD_SECTION 控制文件记载的各部分信息 V$THREAD 线程信息 V$DATAFILE_HEADER 数据文件头所记载的信息 V$ARCHIVED_LOG 归档日志信息 V$ARCHIVE_DEST 归档日志的设置信息 V$LOGMNR_CONTENTS 归档日志分析的DML DDL结果信息 V$LOGMNR_DICTIONARY 日志分析的字典文件信息 V$LOGMNR_LOGS 日志分析的日志列表信息 V$TABLESPACE 表空间信息 V$TEMPFILE 临时文件信息 V$FILESTAT 数据文件的I/O统计信息 V$UNDOSTAT UNDO数据信息 V$ROLLNAME 在线回滚段信息 V$SESSION 会话信息 V$TRANSACTION 事务信息 V$ROLLSTAT 回滚段统计信息 V$PWFILE_USERS 特权用户信息 V$SQLAREA 当前查询过的SQL语句访问过的资源及相关的信息 V$SQL 与V$SQLAREA基本相同的相关信息 V$SYSSTAT 数据库系统状态信息 【4】ALL_开头 ALL_USERS 数据库所有用户的信息 ALL_OBJECTS 数据库所有的对象的信息 ALL_DEF_AUDIT_OPTS 所有默认的审计设置信息 ALL_TABLES 所有的表对象信息 ALL_INDEXES 所有的数据库对象索引的信息 ALL_DB_LINKS 所有的DB LINK ALL_SOURCE 存储过程的SQL语句 ALL_ARGUMENTS 查询存储过程的参数 【5】SESSION_开头 SESSION_ROLES 会话的角色信息 SESSION_PRIVS 会话的权限信息 【6】INDEX_开头 INDEX_STATS 索引的设置和存储信息 【7】伪表 DUAL 系统伪列表信息 【8】SYSTEM_ 开头 SELECT * FROM SYSTEM_PRIVILEGE_MAP WHERE NAME LIKE '%PROCEDURE%'; -- 查询关于存储过程的系统权限 -----ORACLE 常用数据类型----- CHAR --固定长度字符串 最大长度2000 BYTES VARCHAR2 --可变长度的字符串 最大长度4000 BYTES 可做索引的最大长度749 NCHAR --根据字符集而定的固定长度字符串 最大长度2000 BYTES NVARCHAR2 --根据字符集而定的可变长度字符串 最大长度4000 BYTES DATE --日期(日-月-年) DD-MM-YY(HH-MI-SS) 经过严格测试,无千虫问题 TIMESTAMP --日期时间,精确到微妙。 LONG --超长字符串 最大长度2G(231-1) 足够存储大部头著作 RAW --固定长度的二进制数据 最大长度2000 BYTES 可存放多媒体图象声音等 LONG RAW --可变长度的二进制数据 最大长度2G 同上 BLOB --二进制数据 最大长度4G CLOB --字符数据 最大长度4G NCLOB --根据字符集而定的字符数据 最大长度4G BFILE --存放在数据库外的二进制数据 最大长度4G ROWID --数据表中记录的唯一行号 10 BYTES ********.****.****格式,*为0或1 NROWID --二进制数据表中记录的唯一行号 最大长度4000 BYTES NUMBER(P,S) --数字类型 P为整数位,S为小数位 DECIMAL(P,S) --数字类型 P为整数位,S为小数位 INTEGER --整数类型 小的整数 FLOAT --浮点数类型 NUMBER(38),双精度 REAL --实数类型 NUMBER(63),精度更高 -----ORACLE 常用数据类型----- -----ORACLE 查看被锁的表和解锁---------- 2018-04-28 --以下几个为相关表 SELECT * FROM V$LOCK; SELECT * FROM V$SQLAREA; SELECT * FROM V$SESSION; SELECT * FROM V$PROCESS ; SELECT * FROM V$LOCKED_OBJECT; SELECT * FROM ALL_OBJECTS; SELECT * FROM V$SESSION_WAIT; --查看被锁的表 SELECT B.OWNER,B.OBJECT_NAME,A.SESSION_ID,A.LOCKED_MODE FROM V$LOCKED_OBJECT A,DBA_OBJECTS B WHERE B.OBJECT_ID = A.OBJECT_ID; --查看那个用户那个进程照成死锁 SELECT B.USERNAME,B.SID,B.SERIAL#,LOGON_TIME FROM V$LOCKED_OBJECT A,V$SESSION B WHERE A.SESSION_ID = B.SID ORDER BY B.LOGON_TIME; --查看连接的进程 SELECT SID, SERIAL#, USERNAME, OSUSER FROM V$SESSION; --3.查出锁定表的SID, SERIAL#,OS_USER_NAME, MACHINE_NAME, TERMINAL,锁的TYPE,MODE SELECT S.SID, S.SERIAL#, S.USERNAME, S.SCHEMANAME, S.OSUSER, S.PROCESS, S.MACHINE, S.TERMINAL, S.LOGON_TIME, L.TYPE FROM V$SESSION S, V$LOCK L WHERE S.SID = L.SID AND S.USERNAME IS NOT NULL ORDER BY SID; --这个语句将查找到数据库中所有的DML语句产生的锁,还可以发现,任何DML语句其实产生了两个锁,一个是表锁,一个是行锁。 --杀掉进程 SID,SERIAL# ALTER SYSTEM KILL SESSION'210,11562'; -----ORACLE 查看被锁的表和解锁----- -----ORACLE 性能检测---------- 2018-04-28 --1. 查询性能最低的十条SQL SELECT * FROM (SELECT PARSING_USER_ID,EXECUTIONS,SORTS,COMMAND_TYPE,DISK_READS,SQL_TEXT FROM V$SQLAREA ORDER BY DISK_READS DESC )WHERE ROWNUM<10 ; -----ORACLE 性能检测---------- -----EXECUTE IMMEDIATE 的简单用法---------- 2018-05-03 CREATE OR REPLACE PROCEDURE PROC_TEST( --参数区域 ) IS --变量区域 --SQL脚本 V_SQL VARCHAR2(2000) :=''; --记录学生数量 V_NUM NUMBER; BEGIN --执行区域 -- EXECUTE IMMEDIATE用法1:立刻执行SQL语句 V_SQL := 'CREATE OR REPLACE VIEW MYVIEW AS SELECT ID,NAME FROM STUDENT'; EXECUTE IMMEDIATE V_SQL; --- EXECUTE IMMEDIATE用法2:立刻执行SQL语句,并赋值给某个变量 V_SQL := 'SELECT COUNT(1) FROM STUDENT'; EXECUTE IMMEDIATE V_SQL INTO V_NUM; -- EXECUTE IMMEDIATE用法3:带参数的SQL V_SQL:='SELECT * FROM STUDENT T WHERE T.NAME=:1 AND T.AGE=:2'; EXECUTE IMMEDIATE V_SQL USING 'ZHANGSAN',23; END PROC_TEST; ----------EXECUTE IMMEDIATE 的简单用法-----