首页 » ORACLE » sql 编程命名规范

sql 编程命名规范

记的以前学java时,就有老师讲过,一个人的编码习惯直接关系到别人对你专业标准的评价,每个语言都一样,养成了好的习惯会给你以后查询减少不必要的时间,下面是一段网友整理的sql格式规范

—————–SQL语言编程风格,以下仅代表个人观点—-Author:西安-KK——————-
create or replace procedure pro_test_create_table
— 1 命名:建议PRO开头来区分是存储过程还是其他什么对象,例如: TRI_ FUN_ PAC_等等。尽量表达清楚,他的用意。是做什么的

—2  签名、用途详细说明、注意事项相关

/***********************************************************************************************************************
— 1 Author (作者): Da_Administrator
— 2 Created (创建日期): 2011-5-19 16:12:20
— 3 Purpose (说明): 动态创建一个表,列数不确定;实现最快速度的将EXCEL里面的数据,粘贴进ORACLE,此存储过程省略建表的步骤。
— 4 Parameter specifies (参数说明):例如,某过程有传入或传出参数,请在此做详细说明。
— 5 note(备注):特殊说明,执行需要授权等。
–例如此说明:
字段命名要符合数据库范式要求,后面用格式刷拉一列序号出来,把表头粘贴进下面这个表中
create table TEST_A
(
COL11 VARCHAR2(100),
colid number
);
–执行此存储过程请以其他DBA身份登录后执行 grant drop T_DONGTAI_TABLE to DCENTER; grant create any table to dcenter;
*************************************************************************************************************************/
is
—3 声明部分
–建议每个声明的变量或者游标后面写注释,如果从命名上容易理解,可不写。
V_TABLE_EXISTS  NUMBER(10);
V_DROP_TABLESQL VARCHAR2(500);
V_VALUES      varchar2(100);
V_SQLSTRING     varchar2(4000);
–cursor get_values is
–select distinct col11 from test_a;
TYPE ref_cur is ref cursor;
v_a ref_cur;
begin

–4 存储过程正文部分
–建议:关键地方写注释,不必要每句每行都写。为了提高工作效率,SQL除系统视图对象相关须全部大写外,其他代码不必要要求严格区分大小写
–建议:PL/SQL为结构化块解析语言,养成将每块代码用空行隔开的好习惯。
–建议:适当缩进,增加代码的美化程度。
SELECT COUNT(*)
INTO V_TABLE_EXISTS
FROM USER_TABLES
WHERE TABLE_NAME = ‘T_DONGTAI_TABLE’;

IF V_TABLE_EXISTS <> 0 THEN
—判断是否存在这样一张表,如果有,那么先删除。
V_DROP_TABLESQL := ‘DROP TABLE T_DONGTAI_TABLE cascade constraints’;
EXECUTE IMMEDIATE V_DROP_TABLESQL; –执行单挑固定SQL语句
END IF;

V_SQLSTRING := ‘CREATE TABLE T_DONGTAI_TABLE (‘;
–固定常量赋值
open v_a for
select col11 from test_a order by colid;
loop
FETCH v_a
INTO v_values;
EXIT WHEN v_a%NOTFOUND;
V_SQLSTRING := V_SQLSTRING || v_values || ‘ ‘ || ‘varchar2(200)’ || ‘,’;
–动态SQL赋值
end loop;
CLOSE v_a;

V_SQLSTRING := SUBSTR(V_SQLSTRING, 1, length(V_SQLSTRING) – 1) || ‘)’;
–去掉动态SQL中,组合出的最后一个逗号。
–dbms_output.put_line(V_SQLSTRING);
EXECUTE IMMEDIATE (V_SQLSTRING);
–执行单条动态SQL
–5 异常处理部分。工作量大的话,可以不写这一部分。经常写过程觉得这个有多大用处?调试的时候PL/SQL给的DEBUG提示最好。

EXCEPTION
WHEN OTHERS THEN
err_num := SQLCODE;
err_msg := SUBSTR(SQLERRM, 1, 1000);

DBMS_OUTPUT.PUT_LINE(‘在执行’|| err_proc_name ||’过程中出错!错误代码为:’ ||
err_num||’错误信息为:’||err_msg);

end pro_test_create_table;
/

作者  网友-KK

打赏

目前这篇文章有1条评论(Rss)评论关闭。

  1. Verna Desanctis | #1
    2011-12-21 at 05:58

    I’ve been surfing online greater than three hours these days, but I never discovered any fascinating article like yours. It is pretty price enough for me. In my opinion, if all webmasters and bloggers made good content as you did, the net will be much more helpful than ever before. “Wherever they burn books, they will also, in the end, burn people.” by Heinrich Heine.