存储过程

Mysql导出存储过程

最后都变了- 提交于 2020-03-22 15:50:28
转载:https://www.cnblogs.com/yuepeng/archive/2010/09/21/1832775.html Mysql导出存储过程 在部署某学院的网站时,发现一个错误: 1 FUNCTION config_get does not exist. 找到代码一看,是conn.prepareCall("{call config_get(?,?,?)}");这一句出了错。上网查了查,这是在调用存储过程, 那么config_get就是存储过程名。到数据库里用show procedure status;看了看,一个存储过程也没有。也就是导数据库时没有导存储过程。 下面是导出存储过程的代码 1 # mysqldump -u 数据库用户名 -p -n -t -d -R 数据库名 > 文件名 其中,-d 表示--no-create-db, -n表示--no-data, -t表示--no-create-info, -R表示导出function和procedure。所以上述代码表示仅仅导出函数和存储过程,不导出表结构和数据。但是,这样导出的内容里,包含了trigger。再往mysql中导入时就会出问题,错误如下: ERROR 1235 (42000) at line **: This version of MySQL doesn't yet support ‘multiple

Oracle导出存储过程

梦想的初衷 提交于 2020-03-22 15:49:17
SQL> SELECT * FROM dba_directories ; OWN DIRECTORY_NAME DIRECTORY_PATH ------- ---------------------- --------------- SYS DPUMPDIR /oracle/bakup SQL>grant read ,write on directory DPUMPDIR to &user; C:/Users/Liangwei>expdp help=y ... INCLUDE 包括特定对象类型。 例如, INCLUDE=TABLE_DATA。 expdp user/password directory=DPUMPDIR dumpfile=prodedure.dmp include=PROCEDURE 当然PROCEDURE 也可以换成其它对象如: INDEX,TABLE,FUNCTION,VIEW,DATABASE LINK,SYNONYM,PACKAGE BODY,SEQUENCE,LOB,PACKAGE C:/Users/Liangwei>impdp help=y ... SQLFILE 将所有的 SQL DDL 写入指定的文件。 impdp user/password directory=DPUMPDIR dumpfile=prodedure.dmp SQLFILE

Hibernate调用Oracle的存储过程

风格不统一 提交于 2020-03-22 04:45:12
  众所周知,当过多的使用存储过程,触发器等 数据库方言相关的应用时,应用程序的移植性会变差,特别是在Hibernate中使用这些,简直是讽刺,但是当今中国又有哪家公司做项目会关心应用程序的移植性呢?   现在看看Hibernate中对Oracle存储过程的调用.   1.plsql 代码    proc.plsql create Procedure proc() begin select * from proctab; end; 1 create procedure proc1(v_no number(4)) 2 begin 3 select * from proc1 4 where id=v_no; 5 end;    2.Hibernate 存储过程调用的一种方法是,通过XML传统的映射方式去调用。 -》存储过程映射和领域模型中的实体的对应关系    xml映射文件 1 <class name="com.test.User" table="proctab"> 2 <id name="id" column="id"> 3 <generator class="native"/> 4 </id> 5 <property name="name" column="name" type="string" /> 6 <property name="age" column="age"

Oracle两个分页存储过程的比较

吃可爱长大的小学妹 提交于 2020-03-22 03:06:12
由于公司项目上的问题,在数据量很大的时候,在SELECT 语句中包含了很多 function 致使查询进行了全表扫描,例如查询语句:select function1(col1) as a1,function2(col2) as a2,function3(col3) as a3,...... from table1 t1 where col5 = function(col5) 像这种SQL语句查询的过程中会变得巨慢,因为在function中又去其他表(比如字典表)中做了查询,一个只有10W记录的表,查询一个类似的SQL语句需要25~30秒的样子,原来的分页存储过程: 1 create or replace package body PK_Pager 2 as 3 procedure GetPager 4 ( 5 p_PageSize int , -- 每页记录数 6 p_PageNo int , -- 当前页码,从 1 开始 7 p_SqlSelect varchar2 , -- 查询语句,含排序部分 8 p_OutRecordCount out int , -- 返回总记录数 9 p_OutCursor out mytype 10 ) 11 as 12 v_sql varchar2 ( 3000 ); 13 v_count int ; 14 v_heiRownum int ; 15

存储过程系列之调试存储过程 SQL Server 2005

主宰稳场 提交于 2020-03-21 14:27:33
在数据库中直接调试 在数据库中直接调试是调试SQL Server 2005的 存储 过程的最简单的方法。 在Visual Stuido的IDE中你可以选择单步执行存储过程,然后就可以一条语句一条语句地单步执行了,同时你也可以检查和修改存储过程内的T-SQL变量和参数。本文结尾处提供下载的压缩包中包括一个SQL Server 2005 Express版本的Northwind数据库。我在其中添加了一个名为“DoThings”的存储过程,它有一个参数@CategoryID。这是一个没什么实用价值的存储过程,但是它有很多的T-SQL语句和变量,另外还有一个参数,这将使我们能更好地练习存储过程的调试。 在 服务器 资源管理器中右键单击“DoThings”存储过程,然后选择单步执行存储过程的选项。 (注意:SQL Server调试只有Team Systems和Professional版本的Visual Studio才支持。) 调试器启动并且执行存储过程。因为存储过程“DoThings”需要一个传入值给@CategoryID,所以会弹出一个对话框让我们提供该值。输入1后单击OK。 首先会执行第一条语句。你可以选择逐语句或逐过程进行调试(快捷键分别为F11和F10),也可以在监视窗口中添加参数和变量。 存储 过程调试期间的截屏如下图所示。左侧的黄色箭头指的是当前执行的语句。监视窗口中显示的是

存储过程中的循环使用

百般思念 提交于 2020-03-21 13:25:34
以前一直使用存储过程,但是从没有自己写过一些关于循环语句的存储过程,今天就把我写的一些代码拿出来给大家分享 代码举例: /****** 对象: 存储过程 dbo.get_zb_count 脚本日期: 2007-05-18 15:34:33 ******/ CREATE PROCEDURE get_zb_count_3 @J_JID varchar(50), @S_Area varchar(6000), @K_ID varchar(50), @zb_count int output AS begin declare @i int ---存放循环变量 declare @count int ---存放表的数据记录数 declare @Kh_ID varchar(50)-----存放考核子指标值 declare @total int ------存放count的循环累计 create table #KhStyle(IntID int identity(1,1), StyleID varchar(50)) ---创建临时表 insert into #KhStyle(StyleID) select K_ID from T_Kaoh where J_JID=@J_JID and K_FID=@K_ID --------把查询的子指标记录插入到临时表 select @count = count(1

MS Sql Server分页存储过程以及C#调用

杀马特。学长 韩版系。学妹 提交于 2020-03-21 10:20:39
前面把Oracle的分页存储过程写了,这里也贴出MS SQL Server的分页存储过程,不过这个存储过程的灵活性没有Oracle那个强,大家如果有好的建议或者方法,记得留言哦 闲话不扯了,贴代码: 1、存储过程: Create or procedure AspNetPage @tblName varchar(1000), -- 表名 @SelectFieldName varchar(4000), -- 要显示的字段名(不要加select) @strWhere varchar(4000), -- 查询条件(注意: 不要加 where) @OrderFieldName varchar(255), -- 排序索引字段名 @PageSize int , -- 页大小 @PageIndex int = 1, -- 页码 @iRowCount int output, -- 返回记录总数 @OrderType bit = 0 -- 设置排序类型, 非 0 值则降序 AS declare @strSQL varchar(4000) -- 主语句 declare @strTmp varchar(4000) -- 临时变量 declare @strOrder varchar(400) -- 排序类型 declare @strRowCount nvarchar(4000) -- 用于查询记录总数的语句

存储例程

陌路散爱 提交于 2020-03-21 03:25:52
存储例程是存储程序的一种类型,本质上也是封装了一些可执行的语句,只不过它的调用方式是:需要手动去调用!存储例程又可以分为存储函数和存储过程。 存储函数 创建存储函数 存储函数其实就是一种函数,只不过在这个函数里可以执行命令语句而已。函数它可以把处理某个问题的过程封装起来,之后直接调用函数就可以去解决同样的问题了。MySQL 中定义存储函数的语句如下: CREATE FUNCTION 存储函数名称([参数列表]) RETURNS 返回值类型 BEGIN 函数体内容 END 从这里可以看出,定义一个存储函数需要指定函数名称、参数列表、返回值类型以及函数体内容,如果该函数不需要参数,那参数列表可以被省略,函数体内容可以包括一条或多条语句,每条语句都要以分号 ; 结尾。里边的制表符和换行仅仅是为了好看,完全可以用空格代替。 mysql> delimiter $ mysql> create function avg_score(s varchar(100)) -> returns double -> begin -> return (select avg(score) from student_score where subject = s); -> end $ Query OK, 0 rows affected (0.01 sec) 定义了一个名叫 avg_score 的函数,它接收一个

SQL Server 文件操作

余生长醉 提交于 2020-03-20 22:54:53
原文: SQL Server 文件操作 在master数据库中,SQL Server提供系统扩展的存储过程,其中有一些存储过程的命名以xp_开头,用于处理操作系统的文件。 一,判断文件是否存在 存储过程sys.xp_fileexist 用于判断文件是否存在,参数是文件(file)的路径或目录的路径: exec master.sys.xp_fileexist 'D:\test.txt' 该存储过程返回的结果集有一行数据,三个字段,如下图: 二,创建子目录 存储过程 sys.xp_create_subdir 用于创建子目录,参数是子目录的路径: exec master.sys.xp_create_subdir 'D:\test' 执行存储过程,系统返回消息:Command(s) completed successfully,说明子目录创建成功。 三,查看子目录结构 存储过程sys.xp_dirtree 用于显示当前目录的子目录,该存储过程有三个参数: directory:第一个参数是要查询的目录; depth :第二个参数是要显示的子目录的深度,默认值是0,表示显示所有的子目录; file :第三个参数是bool类型,指定是否显示子目录中的文件(file),默认值是0,表示不显示任何文件,只显示子目录(directory); exec master.sys.xp_dirtree 'D:

MySQL存储过程使用简介

╄→гoц情女王★ 提交于 2020-03-20 12:52:51
3 月,跳不动了?>>> 一句话解决方案 # 进入到mysql控制台 # step1: 分隔符改为$$,这块可以自定义,主要是为了和存储过程里的分号不一致 delimiter $$ # step2: 创建存储过程 create procedure myproc() begin declare num int; set num=1; while num <= 10000000 do insert into test_user(username,gender,password) values(num,'保密',PASSWORD(num)); set num=num+1; end while; end$$ # step3: 恢复分号作为分隔符 delimiter ; # step4: 调用存储过程 call myproc(); 总结 1.存储过程适合做重复的事情,但是不适合在大型项目中长期使用,因为兼容性(不同db的存储过程不一致) 2.上述存储过程经过主要是为了学习索引,创建的大量测试数据 参考 https://blog.csdn.net/qq_33556185/article/details/52192551 https://www.runoob.com/w3cnote/mysql-stored-procedure.html 来源: oschina 链接: https://my