sql server2014切换到oracle12c

安装oracle12c

创建用户

--------创建kdbase------------------------------------------
sqlplus / as sysdba;
create pluggable database PDBORCL admin user user1 identified by user1 roles=(connect)  
file_name_convert=  
('C:\app\oracle\oradata\orcl\pdbseed',  
'C:\app\oracle\oradata\orcl\pdborcl');  
alter session set container=PDBORCL;  
alter pluggable database PDBORCL open;  

--1.删除系统原有表空间、数据库用户
alter session set container=PDBORCL;  
drop user user1 cascade;
drop tablespace TS_USER1 including contents and datafiles cascade constraints;

--2.创建表空间
create tablespace TS_USER1 datafile 'C:\app\oracle\oradata\orcl\user1.dbf' size 32M autoextend on next 100M maxsize 15000M extent management local;
--3.重启OracleServiceOrcl服务
exit
lsnrctl stop
sqlplus / as sysdba
alter session set container=PDBORCL; 
shu immediate
startup
exit
lsnrctl start

sqlplus / as sysdba
alter session set container=PDBORCL; 
--4.创建数据库用户
create user user1 identified by user1 default tablespace TS_USER1;
GRANT 
  CREATE SESSION, CREATE ANY TABLE, CREATE ANY VIEW ,CREATE ANY INDEX, CREATE ANY PROCEDURE,
  ALTER ANY TABLE, ALTER ANY PROCEDURE,
  DROP ANY TABLE, DROP ANY VIEW, DROP ANY INDEX, DROP ANY PROCEDURE,
  SELECT ANY TABLE, INSERT ANY TABLE, UPDATE ANY TABLE, DELETE ANY TABLE
  TO user1;
GRANT connect,resource TO user1;
alter user user1 quota unlimited on TS_USER1;
--解决PLSQL无法连接的问题
grant dba to user1;  

------------------创建kdia-------------------------------
--1.删除系统原有表空间、数据库用户
sqlplus / as sysdba;
alter session set container=PDBORCL;  
drop user user2 cascade;
drop tablespace TS_USER2 including contents and datafiles cascade constraints;

--2.创建表空间
create tablespace TS_USER2 datafile 'C:\app\oracle\oradata\orcl\user2.dbf' size 32M autoextend on next 100M maxsize 15000M extent management local;
--3.重启OracleServiceOrcl服务
exit
lsnrctl stop
sqlplus / as sysdba
alter session set container=PDBORCL; 
shu immediate
startup
exit
lsnrctl start

sqlplus / as sysdba
alter session set container=PDBORCL; 
--4.创建数据库用户
create user user2 identified by user2 default tablespace TS_USER2;
GRANT 
  CREATE SESSION, CREATE ANY TABLE, CREATE ANY VIEW ,CREATE ANY INDEX, CREATE ANY PROCEDURE,
  ALTER ANY TABLE, ALTER ANY PROCEDURE,
  DROP ANY TABLE, DROP ANY VIEW, DROP ANY INDEX, DROP ANY PROCEDURE,
  SELECT ANY TABLE, INSERT ANY TABLE, UPDATE ANY TABLE, DELETE ANY TABLE
  TO user2;
GRANT connect,resource TO user2;
alter user user2 quota unlimited on TS_USER2;
--解决PLSQL无法连接的问题
grant dba to user2;  

建序列器

use user1;
DROP SEQUENCE SEQ_ASSET_STOCKLOG;
create sequence SEQ_ASSET_STOCKLOG
minvalue 1
maxvalue 999999999999999999
start with 1
increment by 1
CACHE  20;

创建表

create table ASSET_STOCKLOG 
(
   RECORD_NO            INTEGER              default SEQ_ASSET_STOCKLOG.NEXTVAL not null,
   constraint PK_ASSET_STOCKLOG primary key (RECORD_NO)
);

comment on table ASSET_STOCKLOG is
'表注释';
comment on column ASSET_STOCKLOG.RECORD_NO is
'记录号(字段注释)';
...

转换存储过程和函数

注释MSSQLORACLE
今天CONVERT(VARCHAR(8), GETDATE(), 112)TO_CHAR(SYSDATE,’YYYYMMDD’)
现在时分秒,去掉分号replace(CONVERT(varchar,getdate(),24),’:’,”)replace(TO_CHAR(SYSDATE,’hh24:mi:ss’),’:’,”)
字符串位置,字符串@CHAR在@STR中的位置CHARINDEX(@CHAR,@STR)INSTR(@STR,@CHAR)
存储过程执行动态SQLEXEC(sqlstr)EXECUTE IMMEDIATE sqlstr
打印PRINT(XXX)dbms_output.putline(XXX)
从左向右截取字符串3位left(str,3)substr(str,0,3)
从右向左截取字符串3位right(str,3)substr(str,-3)
存储过程赋值select @val=123select 123 into val from dual
存储过程赋值二select @val=123val:=123
变量定义和赋值DECLARE @VAL1 VARCHAR(64),@VAL2 INT 换行SET @VAL2=1DECLARE VAL1 VARCHAR(64);换行VAL2 INT :=1 ;
数字类型BIGINTNUMBER(20)
字符串连接SELECT ‘A’+’B’SELECT concat(‘A’,’B’) FROM DUAL 或者使用两条竖线
删除指定长度的字符并在指定的起始点插入另一组字符,获取’1,2,3’SELECT STUFF(‘,1,2,3’, 1, 1, ”) ASELECT substr (‘,1,2,3’, 1) A FROM dual;
数据类型DATETIMEDATE
DATE字段存日期cast(‘2015-06-24 16:48:00.987’ as DATETIME)to_timestamp(‘2015-06-24 16:48:00.987’,’yyyy-mm-dd hh24:mi:ss:ff9’)
DATE字段存日期二cast(‘2015-06-24 16:48:00’ as DATETIME)TO_DATE(‘2015-06-24 16:48:00.987’,’yyyy-mm-dd hh24:mi:ss’)
DATE字段存时分秒CONVERT(varchar(12),getdate(),108)TO_CHAR(SYSDATE,’hh24:mi:ss’)
null替换ISNULL(COL_NAME,”)NVL(COL_NAME,”)
连接字符串+双竖线
分页查询select top {pageSize} o.* from (select row_number() over(order by {orderCols}) as rownumber,* from ({sql}) a ) o where rownumber>{firstIndex};select * from ({sql}) fetch offset {firstIndex} rows fetch next {pageSize} rows only;
查询前几条数据SELECT top {num} * from ({sql}) 可以使用select top {num} percent * from tb order by score提高效率selet * from ({sql}) fetch first {pageSize} rows only;
转换为字符串类型CONVERT(VARCHAR(200),COL_NAME)TO_CHAR(COL_NAME)
转换为数字类型CONVERT(NUMBERIC(19,0),col_name)cast(col_name as number(19,0))
查询后缀是_TASK所有表和字段信息SELECT TABLE_NAME = d.name , TAB_COMMENTS = ISNULL(CONVERT(VARCHAR(1024),f.value), ”) , COLUMN_NAME = a.name , COL_COMMENTS = ISNULL(CONVERT(VARCHAR(1024),g.[value]), ”) FROM syscolumns a LEFT JOIN systypes b ON a.xusertype = b.xusertype INNER JOIN sysobjects d ON a.id = d.id AND d.xtype = ‘U’ AND d.name != ‘dtproperties’ LEFT JOIN syscomments e ON a.cdefault = e.id LEFT JOIN sys.extended_properties g ON a.id = g.major_id AND a.colid = g.minor_id LEFT JOIN sys.extended_properties f ON d.id = f.major_id AND f.minor_id = 0 WHERE 1 = 1 AND d.name LIKE ‘%/_TASK’ ESCAPE ‘/’select col.TABLE_NAME as TABLE_NAME,utc.comments as TAB_COMMENTS,col.COLUMN_NAME as COLUMN_NAME,com.comments AS COL_COMMENTS from user_tab_columns col inner join user_tab_comments utc on utc.table_name=col.TABLE_NAME inner join user_col_comments com on col.TABLE_NAME=com.TABLE_NAME and col.COLUMN_NAME=com.COLUMN_NAME and col.TABLE_NAME LIKE ‘%/_TASK’ ESCAPE ‘/’
查询所有表的主键字段SELECT TABLE_NAME,COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGEselect cu.table_name as TABLE_NAME, cu.column_name as COLUMN_NAME from user_cons_columns cu, user_constraints au where cu.constraint_name = au.constraint_name and au.constraint_type = ‘P’
表结构信息是关键字使用[]或”“select a.[SYSDATE] from YDGH_ZWHY_INFO_TEMP aselect a.”SYSDATE” from YDGH_ZWHY_INFO_TEMP a
截取字符串SELECT SUBSTRING(‘Hello_World’,0,7)SELECT SUBSTR(‘Hello_World’,0,6) FROM DUAL
截取字符串二SELECT SUBSTRING(‘Hello_World’,2,6)SELECT SUBSTR(‘Hello_World’,2,6) FROM DUAL
判断是否为空select CASE WHEN ” = ” THEN 0 ELSE 123 END AS SAFERATEselect CASE WHEN ” IS NULL THEN 0 ELSE 123 END AS SAFERATE from dual
判断是否存在IF EXISTS (SELECT * FROM GATHTASK WHERE GATH_SN=1) BEGIN DELETE FROM GATHTASK WHERE GATH_SN=1; ENDdeclare v_cnt number; begin select count() into v_cnt from dual where exists (SELECT FROM GATHTASK WHERE GATH_SN=1); if v_cnt != 0 then DELETE FROM GATHTASK WHERE GATH_SN=1; end if; end;
EXISTSIF EXISTS (SELECT …) BEGIN DELETE…; ENDdeclare v_cnt number; begin select count(*) into v_cnt from dual where exists (SELECT…); if v_cnt != 0 then DELETE…; end if; end;

利用Oracle动态游标实现动态SQL循环遍历

create or replace procedure P_TEST_SQL is  
TYPE ref_cursor_type IS REF CURSOR;  --定义一个动态游标   
tablename varchar2(200) default 'ess_client';  
v_sql varchar2(1000);  
mobile varchar2(15);  
usrs ref_cursor_type;  
begin  
  --使用连接符拼接成一条完整SQL   
  v_sql := 'select usrmsisdn from '||tablename||' where rownum < 11';  
  --打开游标   
  open usrs for v_sql ;  
  loop  
      fetch usrs into mobile;   
      exit when usrs%notfound;  
      insert into tmp(usrmsisdn) values(mobile);  
  end loop;  
  close usrs;  
  commit;  
end P_TEST_SQL;  

Mybatis 定义参数查询表字段(SQLSERVER)

    <select id="queryTableColumnByTableName_Win_MSSQL" parameterType="java.util.HashMap" resultType="java.util.HashMap">
        DECLARE @table_name as varchar(max)
        set @table_name ='${TABLE_NAME}'
        SELECT cast(sys.columns.name as varchar()) as COLUMN_NAME,
        cast((select value FROM sys.extended_properties where sys.extended_properties.major_id = sys.columns.object_id
        and sys.extended_properties.minor_id = sys.columns.column_id) as varchar) AS COLUMN_COMMENT
        from sys.columns, sys.tables, sys.types where sys.columns.OBJECT_ID = sys.tables.object_id
        and sys.columns.system_type_id=sys.types.system_type_id and sys.tables.name=@table_name
        ORDER by sys.columns.column_id
    </select>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值