SQL开发经验一

第一个sql:

SELECT *
  FROM (SELECT ROLE_ID, A.MODULE_ID, B.MODULE_NAME, B.LEVEL_ID
          FROM TB_ROLE_PRI A, TB_MODULE B
         WHERE A.ROLE_ID = '24'
           AND A.MODULE_ID = B.MODULE_ID
        UNION ALL
        SELECT '1', C.MODULE_ID, C.MODULE_NAME, C.LEVEL_ID
          FROM TB_MODULE C
         WHERE C.MODULE_ID NOT IN
               (SELECT MODULE_ID FROM TB_ROLE_PRI WHERE ROLE_ID = '24'))
 ORDER BY LEVEL_ID

 

注意:Union All    NOT IN 的用法,以及二者连用! 处理了权限设置问题!

 

2. SQl的Decode的用法:

DECODE(A.STATE,'0','未缴费','1','缴费未审核','2','已缴费','3','注销')
TO_CHAR(HG.CREATE_DATE, 'yyyy-mm-dd') 日期转换

 

 3.substr(字段,beginnum,length) ; 截取字符串:

SUBSTR(D.AREA_CODE,5,2)

 4。SEQ_HEALTH_ID.Nextval

对于表中的自增长主键,我们为每个数据表创建一个序列,但后插入时调用! 如果要求位数方面固定,则可以使用函数!

 

 5。几种数据插入方式:

StringBuffer sql = new StringBuffer();
		sql.append("insert into TAble(SN,PARA_NAME,VALUE,UNIT,REMARK,COLUMN_TYPE,AREA_NO) ");
		sql.append("values(");
		sql.append("SEQ_SYSTEM_PARAMETER.nextval,");
		sql.append("'" + form.getPara_name() + "',");
		sql.append("'" + form.getValue() + "',");
		sql.append("'" + form.getUnit() + "',");
		sql.append("'" + form.getRemark() + "',");
		sql.append("'" + form.getColumn_type() + "'");
		sql.append("'" + form.getArea_no() + "'");
		sql.append(")");
		System.out.println("sql="+sql.toString());
		jdbc.execute(sql.toString());

 

StringBuffer sql = new StringBuffer();
		sql.append(" INSERT INTO D101(D101_01,D101_02,D101_03,D101_04,D101_05,D101_06,D101_07,D101_08,D101_09,D101_10,D101_11,D101_12,D101_13,D101_14,D101_15,D101_16,D101_17,D101_18,D101_19,D101_20,D101_21,D101_22,D101_23,D101_24,D101_25,D101_26,D101_27,D101_28,D101_29) ");
		sql.append(" VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
		Object[] o ={jgdm,form.getJgmc(), form.getLsgx(), form.getZbdw(), form.getJgjb(), form.getTxdz(),form.getYzbm(),
				     form.getDhhm(), form.getDdyx(), form.getClsj(), form.getFddb(), form.getZcjj(), form.getCswssgs(), form.getBzcws(),
				     form.getSycws(), form.getRys(), form.getWjrys(), form.getZlkss(), high_code, form.getNmzrcs(), form.getChnmzrcs(),
				    form.getNcyrcs(), form.getChncyrcs(), form.getNywsl(), form.getChbrnywsl(), form.getSbddlx(), form.getPzddlx(), form.getJglx(), low_code};
		int [] i={Types.VARCHAR,Types.VARCHAR,Types.VARCHAR,Types.VARCHAR,Types.VARCHAR,Types.VARCHAR,Types.VARCHAR,
				  Types.VARCHAR,Types.VARCHAR,Types.DATE,Types.VARCHAR,Types.INTEGER,Types.INTEGER,Types.INTEGER,
				  Types.INTEGER,Types.INTEGER,Types.INTEGER,Types.INTEGER,Types.VARCHAR,Types.INTEGER,Types.INTEGER,
				  Types.INTEGER,Types.INTEGER,Types.DOUBLE, Types.DOUBLE,Types.VARCHAR,Types.VARCHAR,Types.VARCHAR,Types.VARCHAR};
		try{
			int j=jdbc.update(sql.toString(),o,i);
			} catch(Exception e) {
				e.printStackTrace();
			}

 

6。LEFT JOIN  、 RIGHT JOIN  、INNER JOIN  、union 

 

7.length(字段): 取字段长度

 

8.nvl(a,b) =>如果a字段为null,则返回b,如果a不是null,则返回a ;如果ab都为null,则返回null;

 

9。TRIM(字段): 清除两边空格

 

 10.&变量名 的使用: =>直接返回一个字符集合,所以使用时,必须使用单引号(‘&a' )包围方可;

DECLARE
BEGIN
  dbms_output.put_line('&a');
END;

 11。对于字典表,我们尽量在后台写成函数,在前台调用,在数据多时,能够提高效率;

 12. Oralce中,在添加的功能的存储过程中,在sql中我们可以直接使用序列SEQ_VISIT_LIST_ID.Nextval,但是我们不能蒋这个值赋值给变量返回,要注意呀! 不能 returnValue := SEQ_VISIT_LIST_ID.Nextval; 由于序列必须通过查询方可向下走,所以我们呢可以这样做:

SEQ_id HS_GRAVIDA_VISIT2.v_Id%TYPE;

  SELECT to_char(SEQ_VISIT_LIST_ID.NEXTVAL) INTO seq_id FROM dual;

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值