存储过程

Java 调用Oracle的存储过程

﹥>﹥吖頭↗ 提交于 2021-02-13 23:36:47
1、创建存储过程的语句: 1、表结构: ①:create table TESTA ( A_ID VARCHAR2(10) not null, A_NAME VARCHAR2(10) ) 2、存储过程: ①:create or replace procedure proc_testA(para1 in varchar2, para2 in varchar2) as begin insert into testA(a_id, a_Name) values (para1, para2); end proc_testA; ②:create or replace procedure proc_testA2(para1 in varchar2, para2 out varchar2) as begin select a_name into para2 from testA where a_id = para1; end proc_testA2; ③:create or replace procedure proc_testA3( p_cursor out pack_testa.testa_cursor ) is begin open p_cursor for select * from Testa; end proc_testa3; 3、Package: ①:create or replace

java 调用 oracle 存储过程

旧时模样 提交于 2021-02-13 22:36:47
-- 编写过程,要求输入雇员编号,返回雇员姓名。 create or replace procedure getNameByNo(no in number, name out varchar2) is begin select ename into name from emp where empno = no; end; -- 输入部门号,返回该部门所有员工 -- 先建一个包,定义一个游标类型 create or replace package pkg_cursor is type my_cursor_type is ref cursor; end pkg_cursor; -- 创建过程 create or replace procedure getByDeptno(depno in number, emp_cursor out pkg_cursor.my_cursor_type) is begin open emp_cursor for select * from emp where deptno = depno; end; 2) java 中调用的过程 a. 注册驱动类 , 并 获取数据库连接 b. 用过程调用 SQL 语句 ( 用 {} 括起来 ) 获取 CallableStatement 对象。 c. 设置输入参数 , 如: cs.setInt(1, 7788); d.

MySQL函数和存储过程生成电话号码

一个人想着一个人 提交于 2020-04-26 05:44:45
电话号码是有 11 位数字组成,所以在生成电话号码之前我们先来看一看怎样通过函数生成字符串。 DELIMITER $$ CREATE FUNCTION rand_num(n int) RETURNS VARCHAR(255) BEGIN DECLARE chars_str varchar(20) DEFAULT '0123456789'; DECLARE return_str varchar(255) DEFAULT ''; DECLARE i INT DEFAULT 0; WHILE i < n DO SET return_str = concat(return_str,substring(chars_str , FLOOR(1 + RAND()*10 ),1)); SET i = i +1; END WHILE; RETURN return_str; END $$ DELIMITER ; MySQL 的随机函数 rand() 返回的是一个 float 类型的数字 n , n 的取值范围是 0<=n<1 。值得注意的是能取到 0 但是不能取到 1 。 显然上面的 rand()*10+1 的取值范围为 [1,11), 能取到 1 但是不能取到 11 ,内置函数 floor 的作用是向下取整。所以 floor(rand()*10+1) 的取值范围为 [1,10] 。 因为 MySQL

java实现调用Mysql存储过程分析代码

*爱你&永不变心* 提交于 2020-04-11 17:43:57
数据库的测试代码如下 : 1、新建表test,sql代码如下: create table test( field1 int not null ) TYPE=MyISAM ; insert into test(field1) values(1); 2、删除已存在的存储过程,代码如下: delimiter // -- 定义结束符号 drop procedure p_test; 3、mysql存储过程定义,代码如下: create procedure p_test() begin declare temp int; set temp = 0; update test set field1 = values(temp); end 4、 Java调用带有输入参数的存储过程,代码如下: public static void callIn(int in){ //获取连接 Connection conn = ConnectDb.getConnection(); CallableStatement cs = null; try { //可以直接传入参数 //cs = conn.prepareCall("{call sp1(1)}"); //也可以用问号代替 cs = conn.prepareCall("{call sp1(?)}"); //设置第一个输入参数的值为110 cs.setInt(1,

java调用带有返回值的oracle存储过程

旧街凉风 提交于 2020-04-11 16:39:06
项目开发中,需要利用存储过程来返回处理的结果,虽然sql语句熟悉,但是写oracle存储过程还是头一回,现在分享出来。 首先在PL/SQL中建立一个存储过程, create or replace procedure DIRECTNAME(planId in number,directnamestr out varchar2) is -- in 表示的是输入的参数,out表示的是存储过程输出的参数 namestr varchar2(200); CURSOR CUR -- 游标的声明 is select p.pronam from com_project p where p.projid = planid; e CUR%ROWTYPE; --将游标的一行的数据赋给 e begin if not CUR %isopen then open CUR; --游标开启 end if; fetch CUR into e; while CUR%found loop namestr := namestr || e.pronam || ','; -- oracle的字符串连接使用的是 ||,开始我一直使用 + 号报错 fetch CUR into e; end loop; close CUR; -- 关闭游标 directnamestr := namestr; end DIRECTNAME;

jsp调用存储过程

喜夏-厌秋 提交于 2020-04-08 13:02:15
创建数据表,存储过程的代码都完整发布。 创建表: CREATE TABLE [BookUser] ( [UserID] [int] IDENTITY (1, 1) NOT NULL , [UserName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL , [Title] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL , [Guid] [uniqueidentifier] NOT NULL CONSTRAINT [DF_BookUser_Guid] DEFAULT (newid()), [BirthDate] [datetime] NOT NULL , [Description] [ntext] COLLATE Chinese_PRC_CI_AS NOT NULL , [Photo] [image] NULL , [Other] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL CONSTRAINT [DF_BookUser_Other] DEFAULT ('默认值'), CONSTRAINT [PK_BookUser] PRIMARY KEY CLUSTERED ( [UserID] ) ON [PRIMARY] ) ON

DataTable数据显示于MVC应用程序

不想你离开。 提交于 2020-04-07 12:54:12
在前天的学习小结中《 15天学习MVC后的小结(分享经历与想法) 》 http://www.cnblogs.com/insus/p/3369870.html 知道学习与练习过程中,走了一些弯路。分享出来之后,最大的收获,就是得到网友们的指点。 今天Insus.NET想再起另外一个案例来演练,集中来演示MVC的最要功能,显示数据,显示单数据,创建添加数据,编辑更新数据和删除数据等。改正以前不足的方法,优化繁杂的代码,以及把今天学习掌握的知识也一起分享出来。 数据库可以从下面链接下载: http://download.cnblogs.com/insus/SQL/DataBases/Tutorial2013Oct16.rar 它是SQL Server 2012数据库备份文件,你可以恢复至 2012或更新版本,如SQL Server 2014的数据库上。 为了不用恢复数据库,也能看到数据表结构,可以参考下面的表结构与存储过程: 这张表[dbo].[FruitKind]是这次的演示的主角,其中有一个字段[FruitCategory_nbr]是一个外键,也就是前段时间学习中数据表的主键。在数据为创建好表之后,我们还需要创建一系列的存储过程,由于此表有外键,也说明了这是多表关联。因此先写好一个表函数,即是表关联: 下面的存储过程,是获取数据表所有记录: 以主键来获取单笔记录数据:

使用Mysql 存储过程和游标进行同步数据

半世苍凉 提交于 2020-04-07 09:50:12
-- UpdateUserData是同步数据需要具体执行的步骤,AsyncUserData是控制UpdateUserData的条件。 DROP PROCEDURE IF EXISTS UpdateUserData; DROP PROCEDURE IF EXISTS AsyncUserData; DELIMITER // CREATE PROCEDURE `UpdateUserData`(IN id int(11)) BEGIN DECLARE classidstr VARCHAR(500); DECLARE gradeidstr VARCHAR(500); DECLARE stageidstr VARCHAR(500); DECLARE childidstr VARCHAR(500); select CONCAT("[", GROUP_CONCAT( "\"",tb_child.class_id ,"\""), "]") into classidstr from tb_child where patriarch_id=id; select CONCAT("[", GROUP_CONCAT(tb_child.grade_id), "]") into gradeidstr from tb_child where patriarch_id=id; select CONCAT("[",

十五、mysql 存储过程

▼魔方 西西 提交于 2020-04-07 09:47:03
含义:一组预先编译好的 SQL 语句的集合,理解成批处理语句 优点: 1) 提高代码的重用性     2) 简化操作    3) 减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率 一、创建语法   CREATE PROCEDURE  存储过程名(参数列表)   BEGIN   存储过程体(一组合法的 SQL 语句)   END   注意: 1) 参数列表包含三部分:参数模式、参数名、参数类型       参数模式: IN 该参数可以作为输入,需要调用方传入值             OUT 该参数可以作为输出,该参数可以作为返回值              INOUT 该参数既可以作为输入又可以作为输出,也就是该参 数既需要传入值,又可以返回值      2) 如果存储过程体仅仅只有一句话, BEGIN END 可以省略       存储过程体中的每条 SQL 语句的结尾要求必须加分号       存储过程的结尾可以使用 DELIMITER 重新设置       语法:       DELIMITER 结束标记       案例:       DELIMITER $ 二、调用方法   CALL 存储过程名(实参列表); 三、删除存储过程   语法: drop procedure 存储过程名; 四、查看存储过程的信息   show create procedure