适用:oracle
用法
call COM_BKY_TOOL .CRUSQL('表名','c') 生成insert语句
call COM_BKY_TOOL .CRUSQL('表名','r') 生成select语句
call COM_BKY_TOOL .CRUSQL('表名','u') 生成update语句
-----------------------------------------------------------------------包名------------------------------------------
CREATE OR REPLACE PACKAGE COM_BKY_TOOL IS
PROCEDURE CRUSQL
(
TNAME IN VARCHAR2,
CRUD_TYPE IN VARCHAR2
);
PROCEDURE CREATETYPE(TNAME IN VARCHAR2);
END COM_BKY_TOOL;
-----------------------------------------------------------------------包体------------------------------------------
CREATE OR REPLACE PACKAGE BODY COM_BKY_TOOL AS
PROCEDURE CRUSQL
(
TNAME IN VARCHAR2,
CRUD_TYPE IN VARCHAR2
) AS
CURSOR T_CURSOR IS
SELECT COLUMN_NAME, DATA_TYPE, DATA_LENGTH
FROM ALL_TAB_COLUMNS
WHERE OWNER = 'SCOTT'
AND TABLE_NAME = UPPER(TNAME)
ORDER BY COLUMN_ID;
SQL_STR VARCHAR2(1000);
TYPE TB IS RECORD(
C_NAME ALL_TAB_COLUMNS.COLUMN_NAME%TYPE,
D_TYPE ALL_TAB_COLUMNS.DATA_TYPE%TYPE,
D_LEN ALL_TAB_COLUMNS.DATA_LENGTH%TYPE);
TB2 TB;
ALLCOUNT NUMBER;
COUNTNUM NUMBER := 0;
BEGIN
SELECT COUNT(*)
INTO ALLCOUNT
FROM ALL_TAB_COLUMNS
WHERE OWNER = 'SCOTT'
AND TABLE_NAME = UPPER(TNAME)
ORDER BY COLUMN_ID;
IF CRUD_TYPE = 'r' THEN
DBMS_OUTPUT.PUT('SELECT ');
OPEN T_CURSOR;
LOOP
FETCH T_CURSOR
INTO TB2;
IF T_CURSOR%FOUND THEN
COUNTNUM := COUNTNUM + 1;
DBMS_OUTPUT.PUT(UPPER(TNAME));
DBMS_OUTPUT.PUT('.');
DBMS_OUTPUT.PUT(TB2.C_NAME);
IF COUNTNUM < ALLCOUNT THEN
DBMS_OUTPUT.PUT(',');
END IF;
ELSE
EXIT;
END IF;
END LOOP;
CLOSE T_CURSOR;
DBMS_OUTPUT.PUT(' FROM ');
DBMS_OUTPUT.PUT(UPPER(TNAME));
DBMS_OUTPUT.PUT_LINE('');
ELSIF CRUD_TYPE = 'c' THEN
DBMS_OUTPUT.PUT('INSERT INTO ');
DBMS_OUTPUT.PUT(UPPER(TNAME));
DBMS_OUTPUT.PUT('(');
OPEN T_CURSOR;
LOOP
FETCH T_CURSOR
INTO TB2;
IF T_CURSOR%FOUND THEN
COUNTNUM := COUNTNUM + 1;
DBMS_OUTPUT.PUT(TB2.C_NAME);
SQL_STR := SQL_STR || '?';
IF COUNTNUM < ALLCOUNT THEN
DBMS_OUTPUT.PUT(',');
SQL_STR := SQL_STR || ',';
END IF;
ELSE
EXIT;
END IF;
END LOOP;
CLOSE T_CURSOR;
DBMS_OUTPUT.PUT(')VALUES(');
DBMS_OUTPUT.PUT(SQL_STR);
DBMS_OUTPUT.PUT(')');
DBMS_OUTPUT.PUT_LINE('');
ELSIF CRUD_TYPE = 'u' THEN
DBMS_OUTPUT.PUT('UPDATE ');
DBMS_OUTPUT.PUT(UPPER(TNAME));
DBMS_OUTPUT.PUT(' SET ');
OPEN T_CURSOR;
LOOP
FETCH T_CURSOR
INTO TB2;
IF T_CURSOR%FOUND THEN
COUNTNUM := COUNTNUM + 1;
DBMS_OUTPUT.PUT(TB2.C_NAME);
DBMS_OUTPUT.PUT('=?');
IF COUNTNUM < ALLCOUNT THEN
DBMS_OUTPUT.PUT(',');
END IF;
ELSE
EXIT;
END IF;
END LOOP;
CLOSE T_CURSOR;
DBMS_OUTPUT.PUT_LINE(' WHERE ID=?');
DBMS_OUTPUT.PUT_LINE('');
END IF;
END CRUSQL;
--
PROCEDURE CREATETYPE(TNAME IN VARCHAR2) AS
CURSOR T_CURSOR IS
SELECT COLUMN_NAME, DATA_TYPE, DATA_LENGTH
FROM ALL_TAB_COLUMNS
WHERE OWNER = 'SCOTT'
AND TABLE_NAME = UPPER(TNAME)
ORDER BY COLUMN_ID;
TYPE TB IS RECORD(
C_NAME ALL_TAB_COLUMNS.COLUMN_NAME%TYPE,
D_TYPE ALL_TAB_COLUMNS.DATA_TYPE%TYPE,
D_LEN ALL_TAB_COLUMNS.DATA_LENGTH%TYPE);
TB2 TB;
ALLCOUNT NUMBER;
COUNTNUM NUMBER := 0;
BEGIN
SELECT COUNT(*)
INTO ALLCOUNT
FROM ALL_TAB_COLUMNS
WHERE OWNER = 'SCOTT'
AND TABLE_NAME = UPPER(TNAME);
OPEN T_CURSOR;
DBMS_OUTPUT.PUT('TYPE ');
DBMS_OUTPUT.PUT(UPPER(TNAME));
DBMS_OUTPUT.PUT_line(' IS RECORD(');
LOOP
FETCH T_CURSOR
INTO TB2;
IF T_CURSOR%FOUND THEN
COUNTNUM := COUNTNUM + 1;
DBMS_OUTPUT.PUT(TB2.C_NAME);
DBMS_OUTPUT.PUT(' ');
DBMS_OUTPUT.PUT(UPPER(TNAME));
DBMS_OUTPUT.PUT('.');
DBMS_OUTPUT.PUT(TB2.C_NAME);
DBMS_OUTPUT.PUT('%TYPE');
IF COUNTNUM < ALLCOUNT THEN
DBMS_OUTPUT.PUT_LINE(',');
END IF;
ELSE
EXIT;
END IF;
END LOOP;
CLOSE T_CURSOR;
DBMS_OUTPUT.PUT_LINE('');
DBMS_OUTPUT.PUT_LINE(');');
END CREATETYPE;
END COM_BKY_TOOL;
分享到:
相关推荐
"自动生成SQL语句"的工具为开发者提供了便利,尤其是在处理复杂的数据操作时,可以节省大量手动编写SQL代码的时间。这样的工具通常通过解析数据库结构、理解用户需求,然后自动生成相应的SQL命令。 1. SQL基础知识...
SQL Server 数据自动生成SQL语句是一项实用的功能,它极大地简化了数据迁移或备份的过程。这个功能使得用户能够快速地根据数据库中的表结构和已有数据,生成相应的SQL插入语句,以便将这些数据移植到其他数据库系统...
"mybatis根据数据库表自动生成SQL、实体类、mapper文件工具"就是这样一个解决方案,它基于Eclipse集成开发环境,特别适用于使用SSM(Spring、SpringMVC、MyBatis)框架的项目。 首先,MyBatis是一个优秀的持久层...
本文将深入探讨如何在C#中自动生成SQL语句,以提高开发效率并减少手动编写SQL可能导致的错误。 一、Entity Framework与自动SQL生成 1. Entity Framework(EF)是微软提供的一个开源ORM(对象关系映射)框架,它...
本项目提供的"mybatis自动sql生成插件源码"则进一步提升了开发效率,通过拦截器(Interceptor)在运行时自动生成SQL语句,适用于具有主键或唯一索引的单表操作。 首先,`AutoMapperInterceptor.java`是这个插件的...
针对这种情况,"根据表结构和数据,自动生成SQL"的技术应运而生,它能够极大提升效率并降低错误率。 这个技术的核心是通过分析数据库中的表结构和数据,自动生成对应的SQL脚本。这样的脚本通常包括创建表的DDL...
本项目结合了C#的三层架构、自动生成SQL语句以及抽象工厂设计模式,为初学者提供了一个很好的学习实例。 首先,让我们深入理解一下三层架构。三层架构是一种软件设计模式,将应用程序分为三个主要部分:表现层...
为了提高开发效率,许多工具应运而生,它们能够自动生成SQL语句,甚至包括相关的基本代码,如增、删、改、查操作。标题中的“可以自动生成sql语句的工具”就是这类软件的代表,它极大地简化了程序员的工作,减少了...
开源的AI自动生成SQL语句源代码,这款SQLCoder-70B-Alpha在文本到SQL的转换能力上超越了包括GPT-4在内的所有通用模型,它能更准确地理解你的需求,并生成相应的SQL查询。SQLCoder2和SQLCoder-7B模型已经向公众开放,...
标题中的“Excel自动生成SQL”指的是使用Excel结合VBA(Visual Basic for Applications)宏来创建SQL查询语句。VBA是Microsoft Office套件中内置的一种编程语言,它允许用户自定义工作簿、工作表和图表的功能,以...
"自动生成SQL语句的工具"就是为了帮助开发者减轻这部分负担,提高效率的利器。这类工具通过智能分析和理解数据库结构,能够自动生成复杂的SQL查询,更新和操作语句,使得开发者可以更专注于业务逻辑,而非基础的SQL...
用于自动生成sql脚本的sql server数据库专用用于自动生成sql脚本的sql server数据库专用用于自动生成sql脚本的sql server数据库专用
"自动生成SQL语句"是一个非常实用的技术,尤其对于开发者来说,它可以极大地提高工作效率,减少手动编写SQL时可能出现的错误。下面将详细介绍这个主题,并围绕"自动生成SQL语句"这一功能展开讨论。 首先,自动生成...
"自动生成SQL语句C#代码"的项目旨在简化这一过程,通过C#编程语言实现自动化生成常见的增、删、改、查(CRUD)SQL语句。这种自动化方法尤其适用于SQL Server 2000,它能够提高开发效率,减少手动编写SQL语句时可能...
本篇文章将详细探讨C#中的泛型、反射以及如何利用这些特性来实现自动生成SQL语句。 **一、C# 泛型** 泛型是C#的一个核心特性,它允许我们编写类型参数化的代码,即代码可以在多种数据类型上工作,而无需进行显式的...
支持sqlserver与oracle自动生成sql创建表语句,一键自动生成,非常强大。
这个“读取excel自动生成sql文的txt文件”的工具显然是为了解决这一问题而设计的。它允许用户通过Excel表格结构快速生成对应的SQL插入语句,极大地提高了工作效率。 首先,我们需要理解Excel文件的结构。Excel是一...
SQL语句生成器是一种软件工具,它能够帮助开发者自动生成SQL语句,大大减轻了编写和调试的工作负担。这种工具通常包含各种功能,如:根据数据库结构自动生成SELECT、INSERT、UPDATE、DELETE语句,支持JOIN操作,生成...
本话题将聚焦于如何利用工具和技术自动生成SQL语句,这在Mybatis工程和一般的Web工程中尤其有用。以下是对这个主题的详细阐述: 1. **Web逆向工程基础**:逆向工程通常涉及静态分析(查看源代码、网络流量等)和...
"C#-三层构架-代码生成器"是一个专门针对C#编程语言设计的工具,能够自动生成SQL代码和框架代码,极大地提高了开发效率。 1. 表现层:这一层是用户与系统交互的界面,通常包括Web页面、WinForms或其他UI组件。代码...