版权声明:以上纯属个人独自研究成果,仅供参考,转载请注明出处 https://blog.csdn.net/u012847695/article/details/50948914
sqlserver :
“for”错:
USE [master]
GO
EXEC dbo.sp_dbcmptlevel @dbname=数据库名, @new_cmptlevel=90
GO
ORACEL:
ora-00054:资源正忙:
select t2.username,t2.sid,t2.serial#,t2.logon_time
from v$locked_object t1,v$session t2
where t1.session_id=t2.sid order by t2.logon_time;
alter system kill session 'sid,serial#';
查看安装的Oracle客户端安装的是多少位:
在%ORACLE_HOME%\inventory\ContentsXML目录下面找到comps.xml文件,
例如我安装的路径为C:\Oracle_Client\Client64\product\11.2.0\client_1\inventory\ContentsXML\comps.xml
在这个文件中搜索:
如果找到PLAT="NT_AMD64"表示安装的是64位的Oracle 客户端,如果找到PLAT="NT_X86"则表示安装的是32位的Oracle客户端。
oracel语句:存储过程返回数据集:
--利用游标返回结果集
CREATE OR REPLACE PACKAGE pkg_query AS TYPE cur_query IS REF CURSOR;
END pkg_query;
CREATE OR REPLACE PROCEDURE UP_UserInfo_List_select
(
WhereSql in varchar2, --查询条件
StartIndex in Number, --当前页
EndIndex in Number, --每页显示记录条数
RecordCount out Number,
v_cur out SYS_REFCURSOR) --返回的结果集
IS
v_sql VARCHAR2(1000) := ''; --sql语句
BEGIN
--查总记录数
v_sql := 'SELECT TO_NUMBER(COUNT(*)) FROM UserInfo WHERE 1=1';
IF WhereSql IS NOT NULL or WhereSql <> '' THEN
v_sql := v_sql || WhereSql;
END IF;
EXECUTE IMMEDIATE v_sql INTO RecordCount;
--实现分页查询
v_sql := 'SELECT * FROM (SELECT A.*, rownum r FROM (SELECT * FROM UserInfo ';
IF WhereSql IS NOT NULL or WhereSql <> '' THEN
v_sql := v_sql || ' WHERE 1=1' || WhereSql || ' ORDER BY UserId';
END IF;
v_sql := v_sql || ') A WHERE rownum <= ' || EndIndex || ') B WHERE r >= '|| StartIndex;
DBMS_OUTPUT.put_line(v_sql);
OPEN v_cur FOR v_sql;
END UP_UserInfo_List_select;
--执行,plsql这里是看不到结果集,找到这个过程点测试,才能看到。
declare
RecordCount number :=0;
v_cur pkg_query.cur_query;
begin
UP_UserInfo_List_select('',1,10,RecordCount,v_cur);
DBMS_OUTPUT.put_line(RecordCount);
end;
组内排序:
select * from (
select rank() over (partition by category order by category,sum(price) desc,goodsno) as r,
category,goodsno,SUM(price) amount
from TestCate
group by category,goodsno
)tt where tt.t<=1
oracel实现split,将字符串转成table
SELECT REGEXP_SUBSTR('ZJ03800,D01014', '[^,]+', 1, LEVEL, 'i') AS STR
FROM DUAL CONNECT BY LEVEL <=
LENGTH('ZJ03800,D01014') - LENGTH(REGEXP_REPLACE('ZJ03800,D01014', ',', ''))+1