存储过程

SQLSERVER对加密的存储过程解密

ぐ巨炮叔叔 提交于 2020-01-02 20:22:04
加密测试的存储过程 IF EXISTS(SELECT 1 FROM SYSOBJECTS WHERE TYPE='P' AND NAME='P_TEST') DROP PROCEDURE P_TEST GO CREATE PROCEDURE P_TEST(@USERNAME VARCHAR(20),@MSG VARCHAR(20) OUTPUT) WITH ENCRYPTION AS BEGIN IF(SELECT COUNT(1) FROM Custs WHERE NAME=@USERNAME)>0 SET @MSG='此用户名存在' ELSE SET @MSG='此用户名不存在' END 解密的存储过程 Create PROCEDURE Decryption(@procedure sysname = NULL) AS SET NOCOUNT ON DECLARE @intProcSpace bigint, @t bigint, @maxColID smallint,@procNameLength int select @maxColID = max(subobjid) FROM sys.sysobjvalues WHERE objid = object_id(@procedure) --select @maxColID as 'Rows in sys.sysobjvalues'

存储过程中的死循环导致数据库磁盘占满而连不上

本秂侑毒 提交于 2020-01-02 16:28:12
在使用sybase写存储过程,当时是写了一个通过游标插入临时表数据的内容,由于while 下代码忘写了begin end,因此while语句只会控制下面一行代码,也就是会始终插入,从而导致数据库磁盘满。 代码如下 declare tmp_train_dir_20191227_list cursor for select distinct train_code,字段 from 表名,where 条件 open tmp_train_dir_20191227_list cursor fetch tmp_train_dir_20191227_list into 全局变量 while @@sqlstatus !=2 --begin insert into 临时表 values (全局变量等) fetch tmp_train_dir_20191227_list into 全局变量 --end 问题出在没写如上的begin end 导致while只控制一行代码,死循环插入,在做测试时只要执行了该过程就会有问题。 连不上库的解决方式,由于是临时表的问题,需要终止存储过程,之后临时表自动删除就好了。重启一下数据库就好了。 存储过程临时表生命周期: 全局的临时表以“##”符号开头,它将一直存在于数据库中,直到数据库重新启动 在存储过程中,普通临时表都以“#”开头,一旦存储过程关闭,临时表就会被丢弃

SpringDataJpa调用存储过程

天涯浪子 提交于 2020-01-02 12:33:08
注:存储过程为sqlserver存储过程 1、存储过程 -- [WEB_Person_Login] @In_PersonNo='XX',@In_PassWord='XX' -- ============================================= ALTER PROCEDURE [dbo].[WEB_Person_Login] -- Add the parameters for the stored procedure here @In_PersonNo VarChar(50)='' ,@In_PassWord VarChar(50)='' ,@Return_Error VarChar(50)='' out AS 它需要传入两个参数,且返回值Return_Error 2、调用存储过程的两种方式 2.1、@NamedStoredProcedureQueries <该注解下可以调用多个存储过程,如只有一个可以直接@NamedStoredProcedureQuery> @Data @Entity @NamedStoredProcedureQueries({ @NamedStoredProcedureQuery(name = "WEBPersonLogin", procedureName = "WEB_Person_Login", parameters = {

视图、触发器、事务、存储过程、函数

拥有回忆 提交于 2020-01-01 03:29:46
视图、触发器、事务、存储过程、函数 阅读目录 一 视图 二 触发器 三 事务 四 存储过程 五 函数 六 流程控制 一 视图 视图是一个虚拟表(非真实存在),其本质是【根据SQL语句获取动态的数据集,并为其命名】,用户使用时只需使用【名称】即可获取结果集,可以将该结果集当做表来使用。 使用视图我们可以把查询过程中的临时表摘出来,用视图去实现,这样以后再想操作该临时表的数据时就无需重写复杂的sql了,直接去视图中查找即可,但视图有明显地效率问题,并且视图是存放在数据库中的,如果我们程序中使用的sql过分依赖数据库中的视图,即强耦合,那就意味着扩展sql极为不便,因此并不推荐使用 #两张有关系的表 mysql> select * from course; +-----+--------+------------+ | cid | cname | teacher_id | +-----+--------+------------+ | 1 | 生物 | 1 | | 2 | 物理 | 2 | | 3 | 体育 | 3 | | 4 | 美术 | 2 | +-----+--------+------------+ 4 rows in set (0.00 sec) mysql> select * from teacher; +-----+-----------------+ | tid |

SQL自定义函数

不想你离开。 提交于 2020-01-01 02:39:59
在SQL中不但可以定义存储过程,还可以定义函数,触发器。这里我们简单讲讲函数的使用。 如果你对这些语法不熟悉,可以查看sql存储过程入门系列课程。这里所用到的语法都是那个课程涉及到。 查看连接SQL存储过程入门系列教程 http://www.cnblogs.com/lideng/archive/2013/04/11/3013966.html 函数我们分为系统函数和自定义函数。 一,系统函数 请参考一下链接 http://msdn.microsoft.com/zh-cn/library/ms191238(v=sql.105).aspx 这里还是简单说下系统函数。 比如在存储过程(四)中提到了 捕获错误的函数      ERROR_NUMBER() 返回错误号。     ERROR_SEVERITY() 返回严重性。     ERROR_STATE() 返回错误状态号。     ERROR_PROCEDURE() 返回出现错误的存储过程或触发器的名称。     ERROR_LINE() 返回导致错误的例程中的行号。     ERROR_MESSAGE() 返回错误消息的完整文本。该文本可包括任何可替换参数所提供的值,如长度、对象名或时间。 这些函数都是系统函数。 比如我们想查看当前用户登录的用户名 SELECT SUSER_NAME(); 这样便会返回登录的用户名了。好了关于系统函数

【mysql】慢查询——实验实现

坚强是说给别人听的谎言 提交于 2019-12-31 23:02:56
1.进入mysql 1.1win10进入mysql安装路径(以下大部分命令使用win10环境的mysql服务): 1.2进入Linux(CentOS7)+docker+mysql容器 进入docker容器: docker attach 容器id 或 docker exec -it 容器名 /bin/bash 退出docker容器: 按ctr+D 2. 跳过授权表验证 进入服务: mysqld --skip-grant-tables //此时,启动MySQL的镜像,跳过授权表验证进入服务 3.查看mysql慢查询时间(mysql默认查询时间超过10s,该查询操作即为慢查询): 4. 修改慢查询时间 一下语句的意思是:查询时间 > 666 秒 (而不是>=),为被视为慢查询,(重启后恢复原默认值) 5.记录慢查询 6.mysql设置开启慢查询日志 适用于不允许重启服务器的情况 7.截止到目前,查询当前产生了多少条慢查询记录 8.启动慢查询日志 8.1 使用mysql命令开启慢查询 设置开启慢查询: 设置超过1秒就记录日志: mysql5.1版本之后,long_query_time以微秒记录时间 变量 log_queries_not_using_indexes 设置为ON时,如果sql语句没有使用索引,则该语句将同样会被记录进慢查询日志。 mysql5.6.5版本之后新增了一个参数

存储过程

匆匆过客 提交于 2019-12-31 05:43:24
存储过程如同一门程序设计语言,同样包含了数据类型、流程控制、输入和输出和它自己的函数库。 --------------------基本语法-------------------- 一 . 创建存储过程 create procedure sp_name() begin ......... end 二 . 调用存储过程 1.基本语法:call sp_name() 注意:存储过程名称后面必须加括号,哪怕该存储过程没有参数传递 三 . 删除存储过程 1.基本语法: drop procedure sp_name// 2.注意事项 (1)不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程 四 . 其他常用命令 1.show procedure status 显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过程名称,创建时间等 2.show create procedure sp_name 显示某一个mysql存储过程的详细信息 --------------------数据类型及运算符-------------------- 一、基本数据类型: 略 二、变量: 自定义变量:DECLARE a INT ; SET a=100; 可用以下语句代替:DECLARE a INT DEFAULT 100; 变量分为 用户变量 和 系统变量 ,系统变量又分为会话和全局级变量 用户变量

存储过程和函数

天涯浪子 提交于 2019-12-31 05:43:08
一、存储过程和函数简介 存储过程和函数是在数据库中定义一些SQL语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的SQL语句。存储过程和函数可以避免开发人员重复的编写相同的SQL语句。而且,存储过程和函数是在MySQL服务器中存储和执行的,可以减少客户端和服务器端的数据传输。 二、MySQL存储过程 一.创建存储过程 create procedure sp_name() begin ......... end 二.调用存储过程 1.基本语法:call sp_name() 注意:存储过程名称后面必须加括号,哪怕该存储过程没有参数传递 三.删除存储过程 1.基本语法: drop procedure sp_name; 2.注意事项 (1)不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程 四.其他常用命令 1.show procedure status 显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过程名称,创建时间等 2.show create procedure sp_name 显示某一个mysql存储过程的详细信息 mysql存储过程的参数用在存储过程的定义,共有三种参数类型,IN,OUT,INOUT Create procedure|function([[IN |OUT |INOUT ] 参数名 数据类形...]) IN 输入参数

调试.NET的MDX存储过程

拜拜、爱过 提交于 2019-12-31 04:57:19
  在Visual Studio中调试MDX存储过程非常简单,只要几步设置就可以实现。对于Visual Studio 2010(与VS2005和VS2008的设置方法相同)。在Visual Studio中将存储过程项目附加到分析服务器进程(msmdsrv.exe进程),附加进程之后它会自动加载程序集,分析服务器就会加载指定的存储过程。在开始之前还要在存储过程代码中设置断点。在调试的时候只要在MDX编辑器中运行带有相应存储过程引用的代码,当运行到存储过程的时候,流程就会自动转到Visual Studio中设置的断点处停下,然后就可以对存储过程代码进行跟踪调试了。要想进行MDX存储过程的调试,需要在Visual Studio中将存储过程项目的调试属性中的Enable SQL Server debugging(启用SQL Server调试)选中。如下图: English Edition of this article 来源: https://www.cnblogs.com/SmartBizSoft/archive/2009/05/26/1490398.html

C#调用存储过程返回值

☆樱花仙子☆ 提交于 2019-12-31 01:59:38
因为一般都用T-SQL来执行数据库操作,偶尔现在转到用存储过程,竟然写不来调用过程的返回值了,查了很多资料,都不详细,或者没到点上,也许是我比较笨,呵呵。 C# 源代码 1 /// <summary> 2 /// 校验用户 3 /// </summary> 4 /// <param name="user"> 用户信息 </param> 5 /// <returns></returns> 6 public static int VerifyUser(clsUser user) 7 { 8 int iRet; 9 string sql = String.Format( " EXECUTE VerifyUser @myVerifyReader OUTPUT,'{0}','{1}' " ,user.username,user.password); // 执行的T-SQL串 10 SqlCommand scmd = new SqlCommand(sql, conn); 11 scmd.Parameters.Add( new SqlParameter( " @myVerifyReader " ,SqlDbType.Int)); 12 scmd.Parameters[ " @myVerifyReader " ].Direction = ParameterDirection.Output; 13