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)评论关闭。