知识大全 Oracle8i 中生成创建对象的 SQL
Posted 信息
篇首语:犀渠玉剑良家子,白马金羁侠少年。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Oracle8i 中生成创建对象的 SQL相关的知识,希望对你有一定的参考价值。
Oracle8i 中生成创建对象的 SQL 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
包头定义 CREATE OR REPLACE PACKAGE srcmake AS PROCEDURE maktab; PROCEDURE makview; PROCEDURE makseq; PROCEDURE makcon(tabName VARCHAR ); END srcmake; / 包体定义 CREATE OR REPLACE PACKAGE BODY srcmake AS 处理超过 个字符的行的输出 PROCEDURE dealline(initStr VARCHAR ) IS lineCount INTEGER; i INTEGER; BEGIN lineCount := ceil(length(initStr)/ ); FOR i IN lineCount LOOP dbms_output put_line(substr(initStr + * (i ) )); END LOOP; END dealline; 生成创建表的SQL文件 PROCEDURE maktab IS tempStr varchar ( ); countNum integer; i integer; BEGIN dbms_output enable( E ); 输出sql文件说明信息 dbms_output put_line( REM create table s sql ); dbms_output put_line( REM database user name: ||user); dbms_output put_line( REM outputTime: ||sysdate); 查询用户的所有的表 FOR curtab IN( SELECT a table_name table_name a tablespace_name ments ments FROM user_tables A user_tab_ments b WHERE a table_name = b table_name AND b table_type = TABLE ORDER BY a table_name) LOOP 输出表信息 dbms_output put_line(chr( )|| DROP TABLE ||curtab table_name|| ; ); dbms_output put_line( 表名 ||curtab table_name); dbms_output put_line( 备注 ||ments); dbms_output put_line( CREATE TABLE ||curtab table_name|| ( ); SELECT count(column_name) INTO countNum FROM user_tab_columns WHERE table_name = curtab table_name; i := ; 查询表所有的列 FOR curcol IN( SELECT a * ments FROM user_tab_columns a user_col_ments b WHERE a table_name = curtab table_name AND a table_name = b table_name AND lumn_name = lumn_name ORDER BY column_id) LOOP tempStr := chr( )||rpad(lumn_name )||curcol data_type; 以下类型需要指定长度 IF curcol data_type IN( VARCHAR CHAR VARCHAR RAW ) THEN tempStr := tempStr|| ( ||curcol data_length|| ) ; 数字类型存在精度问题 ELSIF curcol data_type = NUMBER THEN IF curcol data_precision IS NOT NULL THEN tempStr := tempStr|| ( ||curcol data_precision; IF curcol data_scale IS NOT NULL THEN tempStr := tempStr|| ||curcol data_scale|| ) ; ELSE tempStr := tempStr|| ) ; END IF; ELSIF curcol data_scale = THEN tempStr := tempStr|| ( ) ; END IF; END IF; LONG LONG RAW CLOB NLOB BLOB ROWID类型不需指定长度 IF curcol nullable = N THEN 指定非空标志 tempStr := tempStr|| NOT NULL ; END IF; i := i + ; 最后一列不需逗号 IF i != countNum THEN tempStr := tempStr|| ; END IF; 输出列的信息 IF ments IS NOT NULL THEN dbms_output put_line(rpad(tempStr )|| ||ments); ELSE dbms_output put_line(tempStr); END IF; END LOOP; 输出表空间信息 dbms_output put_line( ) TABLESPACE ||curtab tablespace_name|| ; ); 输出表约束 makcon(curtab table_name); END LOOP; dbms_output put_line(chr( )||chr( )); END maktab; 生成表的约束(primary key foreign key) parameter:tabName表名称 PROCEDURE makcon(tabName VARCHAR ) IS tempStr VARCHAR ( ); tempColStr VARCHAR ( ); BEGIN FOR curcon IN( SELECT owner constraint_name name constraint_type type r_constraint_name rname delete_rule r_owner table_name FROM user_constraints WHERE table_name = tabName AND constraint_type IN( P R U )) LOOP 输出约束信息 tempStr := ALTER TABLE ||tabName|| ADD CONSTRAINTS ||curcon name; FOR curcol IN(SELECT column_name FROM user_cons_columns WHERE constraint_name = curcon name) LOOP tempColStr := tempColStr||lumn_name|| ; END LOOP; tempColStr := substr(tempColStr length(tempColStr) ); 输出约束的列信息 IF curcon type = P THEN 主键 tempStr := tempStr|| PRIMARY KEY( ||tempColStr|| ); ; ELSIF curcon type = R THEN 外键 tempStr := tempStr|| FOREIGN KEY( ||tempColStr|| ) ||chr( ); tempStr := tempStr|| REFERENCES ||curcon r_owner|| ||curcon table_name|| ( ||tempColStr|| ) ; tempStr := tempStr||curcon delete_rule|| ; ; ELSIF curcon type = U THEN 唯一约束 tempStr := tempStr|| UNIQUE( ||tempColStr|| ); ; END IF; dbms_output put_line(tempStr); END LOOP; END makcon; 生成创建视图的SQL文件 PROCEDURE makview IS i INTEGER; BEGIN dbms_output enable( E ); 输出sql文件说明信息 dbms_output put_line(chr( )||chr( )|| REM create view s sql ); dbms_output put_line( REM database user name: ||user); dbms_output put_line( REM outputTime: ||sysdate); 查询用户的所有的表 FOR curview IN( SELECT a view_name a text ments ments FROM user_views A user_tab_ments b WHERE a view_name = b table_name AND b table_type = VIEW ORDER BY a view_name) LOOP 输出表信息 dbms_output put_line(chr( )|| DROP VIEW ||curview view_name|| ; ); dbms_output put_line( 视图名 ||curview view_name); dbms_output put_line( 备注 ||ments); dbms_output put_line( CREATE VIEW ||curview view_name|| AS ); dealline(curview text|| ; ); END LOOP; dbms_output put_line(chr( )||chr( )); END makview; 生成创建序列的SQL文件 PROCEDURE makseq IS tempStr VARCHAR ( ); BEGIN dbms_output enable( E ); 输出sql文件说明信息 dbms_output put_line( REM create sequence s sql ); dbms_output put_line( REM database user name: ||user); dbms_output put_line( REM outputTime: ||sysdate); 查询用户的所有的表 FOR curseq IN(select * from seq) LOOP dbms_output put_line( DROP SEQUENCE ||curseq sequence_name|| ; ); tempStr := CREATE SEQUENCE ||curseq sequence_name; IF curseq min_value IS NULL THEN tempStr := tempStr|| NOMINVALUE ; ELSE tempStr := tempStr|| MINVALUE ||curseq min_value; END IF; IF curseq max_value IS NULL THEN tempStr := tempStr|| NOMAXVALUE ; ELSE tempStr := tempStr|| MAXVALUE ||curseq max_value; END IF; tempStr := tempStr|| INCREMENT_BY ||curseq increment_by; tempStr := tempStr|| STRART_WITH ||curseq last_number; IF curseq cycle_flag = Y THEN tempStr := tempStr|| CYCLE cha138/Article/program/Oracle/201311/18930相关参考
PL/SQL学习笔记(五) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 创建和管理表 对象
SQL入门:创建表 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 使用CREATETABLE语句
SQL入门:创建视图 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 如视图中所讨论的视图提供在一
()首先启动SQlServer代理(如果备份出现问题代理会通知管理员) ()在服务器对象里面>新建备份设备 ()创建操作员当备份成功或者失败的时候通过网络通信通知管理员 ()在管理里面
用sql语句动态的创建access表的代如下! <% nowtime=now()tablename=cstr(year(nowtime))
问我发现sysindexes索引表中的很多条目并不是我自己创建的听说它们并不是真正的索引而是SQLServer查询优化器自动创建的统计怎样才能识别哪些是真正的索引哪些是SQLServer自动创建的
用SQLMail创建日常报告 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 大多数数据库开发小组
使用SQLServer创建语言辅助函数 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在现在这样
用SQLServer事件探查器创建跟踪 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! SQLSe
知识大全 SQL工作流模板实例化向导创建SQLServer登录
SQL工作流模板实例化向导创建SQLServer登录 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!