oracle常用语句(长期更)

1. 建表:

create table SF_JLSF_T
(
  bh     NUMBER not null,(实体类中是private Long bh;)
  yhbh   NUMBER not null,
  jssj   VARCHAR2(20),
  fylb   VARCHAR2(60),
  jfrq   DATE default SYSDATE not null,
  jfje   NUMBER default 0 not null,
)
// Add comments to the columns 
comment on column SF_JLSF_T.bh
  is '编号';
comment on column SF_JLSF_T.yhbh
  is '用户编号';
comment on column SF_JLSF_T.jssj
  is '结算时间';
comment on column SF_JLSF_T.fylb
  is '费用类别';
comment on column SF_JLSF_T.jfrq
  is '交费日期';
comment on column SF_JLSF_T.jfje
  is '交费金额';

 2. 添加主键:

alter table SF_JLSF_T
  add primary key (BH);

3. 创建序列:

create sequence SF_JMSF_S
minvalue 1
maxvalue 999999999999999999999999999
start with 1
increment by 1
cache 20;

4. 触发器:

CREATE OR REPLACE TRIGGER SF_ZKLBH_TR
    BEFORE INSERT ON SF_ZKL_T
    FOR EACH ROW
DECLARE
    // local variables here
BEGIN
    SELECT SF_ZKL_S.NEXTVAL INTO :NEW.BH FROM DUAL;
END SF_ZKLBH_TR;

5. 给已经存在的表增加一列:

 
alter table 表名 add 列名 varchar(20) ;
alter table a1 add age number;

6.  给已经存在的表修改属性:

alter table SF_YHZK_T modify zkzt varchar(10) default '启用';

7. 创建DBLink:

(192.168.1.5 是其他服务器所在的IP)       

-- Create database link 
create database link QDDY
  connect to  username  identified by password 
  using '192.168.1.5:1521/oracle';

8. Oracle密码过期:

--将密码有效期由默认的180天修改成“无限制”:
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; 
--修改之后不需要重启动数据库,会立即生效。
--修改后,还没有被提示ORA-28002警告的帐户不会再碰到同样的提示;已经被提示的帐户必须再改一次密码,举例如下
sqlplus / as sysdba 
sql> alter user smsc identified by <原来的密码> ----不用换新密码 
sql> alter user system identified by root; 
sql> alter user scott identified by tiger; 

9. 存储过程调试的时候日期类型填入2017/7/29形式即可(主要是和操作系统日期右下角的格式对应)。
10. 存储过程单步调试无法进入的时候:
右键存储过程,选择ADD DEBUG INFORMATION(添加调试信息)
11. oracle用户被锁定the account is locked的解决办法:

ALTER USER CHARGE_TAIDA ACCOUNT UNLOCK;
ALTER USER CHARGE_TAIDA IDENTIFIED BY CHARGE_TAIDA;

12. Oracle的SQL中

<> 
!= 
~= 
^=

都是不等于的意思。但是记住:null只能通过is null或者is not null来判断,其它操作符都会过滤掉null的数据。 

13. SQLCODE和SQLERRM关键词:

EXCEPTION
  when errorException then
       errorCode := SQLCODE;  
       errorMsg := SUBSTR(SQLERRM, 1, 200);
       dbms_output.put_line(errorCode || ',' || errorMsg);   
  WHEN OTHERS THEN    
    errorCode := SQLCODE;  
    errorMsg := SUBSTR(SQLERRM, 1, 200); 
    dbms_output.put_line(errorCode || ',' || errorMsg); 
    V_RESULT     := -1;
    V_RESULT_MSG :=errorMsg;-- '调用存储过程发生异常';
    ROLLBACK;
END;

14. oracle中函数编译无报错信息时,可通过以下语句查询:

select * from SYS.USER_ERRORS where NAME = <object_name> and type = <object_type>
--记住这里的参数都要大写即可,如:
select * from SYS.USER_ERRORS where NAME = 'SF_GETYHBM_DY_F';

15.存储过程循环:

V_YEAR := TO_NUMBER(SUBSTR(V_CNQ,0,4));
  LOOP
     I:=1+I;
     EXIT WHEN I >= V_NX;
   END LOOP;    

 
16.存储过程输出:

dbms_output.put_line(sqlerrm); 

17.Oracle中文排序:
    当然,Oracle也提供了按照中文拼音排序,按照部首或笔画排序,方式如下:
    

按照拼音顺序:
    ORDER BY nlssort(NAME, 'NLS_SORT=SCHINESE_PINYIN_M')
按照部首顺序:
    ORDER BY nlssort(NAME, 'NLS_SORT=SCHINESE_RADICAL_M')
按照笔画顺序:
    ORDER BY nlssort(NAME, 'NLS_SORT=SCHINESE_STROKE_M')

18. Oracle查询小数位数是两位数以上的数据:

select * from tab where col <> trunc(col * 100) / 100;  

19.Oracle函数格式:

(1)有参数:

create or replace function GET_JBCNFL(  -- 只查当前采暖期,目前只考虑了两种 供暖方式,如果有增减要改代码
       V_MJBHS     VARCHAR2
) return varchar2 is
  Result SF_CS_T.CSZ%TYPE; -- SF_CS_T.CSZ%TYPE
  V_GNFS SF_JMMJ_T.GNFS%TYPE;
  V_CSMC SF_CS_T.CSMC%TYPE;
  V_CSZ  SF_CS_T.CSZ%TYPE;
  V_SQL    VARCHAR2(2000);
  TYPE cur_type IS REF CURSOR;
  cur cur_type;
begin
  Result := '';
  V_SQL := 'SELECT DISTINCT CSZ,REPLACE(CSMC,''基本采暖费率-'','''') FROM SF_CS_T WHERE CSMC IN(';
  V_SQL := V_SQL || ' SELECT DISTINCT REPLACE(' || '''基本采暖费率-''' || '|' || '|' || 'GNFS' || ',' || '''-普通方式''' || ','''') FROM SF_JMMJ_T ';
  V_SQL := V_SQL || ' WHERE BH IN (' || V_MJBHS || '))';

  Open cur for V_SQL;
  loop
       fetch cur into V_CSZ,V_GNFS;
       exit when cur%notfound;
       IF V_GNFS='地热方式' THEN
         Result := Result || '地热方式:' || V_CSZ;
       ELSE
         Result := Result || '普通方式:' || V_CSZ;
       END IF;
       Result := Result || ',';
  end loop;
  close cur;


  return(Result);
end GET_JBCNFL;

(2)无参数:

CREATE OR REPLACE FUNCTION SF_DQCNQ_F
RETURN VARCHAR2
IS
  V_CNQ  VARCHAR2(10);
BEGIN
  SELECT MAX(CNQ) MAXCNQ INTO V_CNQ FROM SF_CS_T WHERE ZF = 0;
  RETURN V_CNQ;
END SF_DQCNQ_F;

20.PLSQL Developer打开oralce字段时报“无效的窗口句柄”的问题,与系统的打印服务有关,只要将“Print Spooler"服务启动即可 


 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值