东浦数据库开发标准
2、在PL/SQL中将一个记录声明为具有相同类型的数据库行的作法是很常见的。PL/SQL提供了%ROWTYPE运算符,使得这样的操作更为方便。
例如: DECLARE
v_StudentRecord students%ROWTYPE;
将定义一个记录,该记录中的字段将与students表中的列相对应。 例如: Declare
v_jobs hr.jobs%rowtype; begin
select * into v_jobs from hr.jobs where job_id ='&aa';
dbms_output.put_line('序号'||v_jobs.job_id ); dbms_output.put_line('名称'||v_jobs.job_title); end;
执行,我们输入aa变量的值:AD_VP 输出结果为: 序号AD_VP
名称Administration Vice President
3.1.5 存储过程中变量的声明应集中在as 和begin 关键字之间
不要在代码中随意定义变量,定义变量时,完成相同功能模块的变量应放在一起,不同模块的变量应空行隔开,增加代码的可读性。
3.1.6 使用varchar2 代替varchar 类型
3.1.7 当存储过程有多个分支返回时,若有事务,需确保各个分支都结束了事
务
3.1.8 采用成熟、稳定、可靠的技术来编码
对于先进的技术或没有成熟的技术使用,需在team 内进行评审。
3.1.9 原则上不要使用动态sql,如果非得使用运态sql,须绑定变量
3.1.10 尽量不要使用子函数方式实现存储过程,应分别定义
此文档的所有部分都为公司的机密文档,其版权为公司所有,未经允许不得非法复制和外流
东浦数据库开发标准
3.1.11 代码中不建议使用goto 语句
3.1.12 确保所有的变量和参数都被使用
声明变量也要一定的系统开销,不要定义没有使用的变量、参数。
此文档的所有部分都为公司的机密文档,其版权为公司所有,未经允许不得非法复制和外流
东浦数据库开发标准
3.2 常用SQL 语句的编写规范
3.2.1 create语句
create table dft_dksz( YHBS VARCHAR2(20) not null, ZHGX DATE, DKKHD VARCHAR2(24), CONSTRAINT pk_dksz_yhbs primary key (YHBS) ) tablespace xxx
3.2.2 select语句
查询语句采用以下原则编写(可最大化重用共享池中的SQL 语句,提高应用程序性能)
? 将select 语句分为5部分:
(1) 由select 开头,后跟一个显示查询结果的列表; (2) 由from 开头,后跟一个或多个获取数据所涉及的表; (3) 由where 开头,后跟一个或多个确定所需值的条件;
(4) 由group by开头,后跟一个或多个表列名,通过这些列以对查询结果进行汇总;
(5) 由order by开头,后跟一个或多个表列名,通过这些列以对查询结果进行排序。
? 每个部分分行编写,将每一行的第一个关键字与第一行的select左对齐,如
select col1, col2, col3 from table1 where col1 > col2 group by col1, col2 此文档的所有部分都为公司的机密文档,其版权为公司所有,未经允许不得非法复制和外流
东浦数据库开发标准
order by col1;
? 语句中嵌入逗号时,在逗号后面加一空格,当逗号是最后一个字符时,把它放
在本行
? 当语句的同一部分要延续到下一行时,按下列格式排列:
select col1, col2, col3, col4, col5, col6, col7, col8, col9, col10
? 将语句中where 和and 部分格式化,书写布局类似于
where and and
? 当语句中出现括号时,括号的两边不留空格
? 在SQL 语句使用运算符时,操作两边应各留一个空格,如
where X = Y and A = B and C = D
3.2.3 insert语句
insert into <要插入的表名> 此文档的所有部分都为公司的机密文档,其版权为公司所有,未经允许不得非法复制和外流
东浦数据库开发标准
( <列1>, <列2>, <列3>, <列4>, <列5>, <列6>, <列7>, ..., <列n-1>, <列n> ) values ( <列1值>, <列2值>, <列3值>, <列4值>, <列5值>, <列6值>, <列7值>, ..., <列n-1值>, <列n值> ) 不规定每行要赋值的字段个数,但是每行字段数和与其对应的赋值行的赋值个数相同。
3.2.4 update语句
update <要更新的表名> set <要更新的列1> = <列值1>, <要更新的列2> = <列值2>, ……
3.2.5 delete语句
delete from table1 where col1 = '???'
此文档的所有部分都为公司的机密文档,其版权为公司所有,未经允许不得非法复制和外流