第一个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;