游标

oracle PLSQL、游标、存储过程、触发器

僤鯓⒐⒋嵵緔 提交于 2020-01-27 00:51:21
文章主目录 PL/SQL 游标 存储过程 触发器 回到顶部 PL/SQL PL/SQL 简介 每一种数据库都有这样的一种语言 , PL/SQL 是在Oracle里面的一种编程语言,在Oracle内部使用的编程语言。我们知道SQL语言是没有分支和循环的,而PL语言是为了补充SQL语言的, 是带有了分支和循环的语言 。 PL/SQL 语法 基本数据类型声明 declare v_name varchar2(20); v_temp number(1); v_count binary_integer := 0; v_sal number(7,2) := 4000.00; v_date date := sysdate; v_pi constant number(3,2) := 3.14; v_valid boolean := false; v_name varchar2(20) not null := 'myname'; declare开头声明变量,v_name表示变量名字,通常以v_xxx这种格式命名变量,varchar2(20)表示变量类型, :=为赋值操作符 。 在 PL/SQL里面boolean类型变量在定义的时候一定要给初始值,Oracle 里面的put_line()不能打印boolean类型的值。 %type 属性声明 还有一种声明变量的方法:使用 %type属性。 declare

MySQL存储过程和游标

夙愿已清 提交于 2020-01-26 20:16:23
一、存储过程 什么是存储过程,为什么要使用存储过程以及如何使用存储过程,并且介绍创建和使用存储过程的基本语法。 什么是存储过程: 存储过程可以说是一个记录集,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样 实现一些功能(对单表或多表的增删改查),然后再给这个代码块取一个名字,在用到这个功能的时候调用 他就行了。 存储过程的好处: 由于数据库执行动作时,是先编译后执行的。然而存储过程是一个编译过的代码块,所以执行效率要比 T-SQL语句高。 一个存储过程在程序在网络中交互时可以替代大堆的T-SQL语句,所以也能降低网络的通信量,提高通信速率。 通过存储过程能够使没有权限的用户在控制之下间接地存取数据库,从而确保数据的安全 存储过程的基本语法: --------------------创建存储过程------------------------------------ CREATE PROCEDURE procedure_name( IN|OUT variable data_type) BENGIN sql_statement; ...... END; -- MySQL支持IN(传递给存储过程)、OUT(从存储过程传出) -- variable 变量 -- data_type 参数的数据类型 -- sql_statement 中 INTO parameter

Oracle 游标Cursor 的基本用法

≯℡__Kan透↙ 提交于 2020-01-26 11:27:37
查询   SELECT语句用于从数据库中查询数据,当在PL/SQL中使用SELECT语句时,要与INTO子句一起使用,查询的 返回值被赋予INTO子句中的变量,变量的声明是在DELCARE中。SELECT INTO语法如下:   SELECT [DISTICT|ALL]{*|column[,column,...]}   INTO (variable[,variable,...] |record)   FROM {table|(sub-query)}[alias]   WHERE............   PL/SQL中SELECT语句只返回一行数据。如果超过一行数据,那么就要使用显式游标(对游标的讨论我们将 在后面进行),INTO子句中要有与SELECT子句中相同列数量的变量。INTO子句中也可以是记录变量。   %TYPE属性   在PL/SQL中可以将变量和常量声明为内建或用户定义的数据类型,以引用一个列名,同时继承他的数据类 型和大小。这种动态赋值方法是非常有用的,比如变量引用的列的数据类型和大小改变了,如果使用了%TYPE, 那么用户就不必修改代码,否则就必须修改代码。   例:   v_empno SCOTT.EMP.EMPNO%TYPE;   v_salary EMP.SALARY%TYPE;   不但列名可以使用%TYPE,而且变量、游标、记录

sql server数据库遍历并修改

一笑奈何 提交于 2020-01-24 06:15:31
sql server 游标的运用 昨天由于要对数据库中大片没有插入的数据进行修复,因此想到了遍历每条数据和修改遍历的数据。 由于并没有有序的字段,不能简单的用while循环,因此,需要用到游标。 下面对sql 语句进行分析。 begin declare @pid varchar(50) declare @path varchar(260) declare @date varchar(50) declare @rpath varchar(260)//前4行是声明的变量 declare order_cursor cursor for(select[Patient_ID]from [HisReport1].[dbo].[His_report] where report_Date between ‘2017-01-05’ and ‘2017-01-06’)//第五、六行用于声明一个游标,并指明游标作用范围 open order_cursor//打开一个游标 fetch next from order_cursor into @pid //将查到结果的第一个值赋给变量pid while @@FETCH_STATUS=0//开始进行循环,判断fetch的状态 begin select @date=exam_date from [zhilikangDrPacs].[dbo].[dicom

Redis-Jedis使用Scan实现redis前缀key查找

北城以北 提交于 2020-01-23 10:53:18
  我们都知道Redis是单线程的,因此我们在使用一些命令(例如keys)的时候需要非常谨慎,可能一不小心就会阻塞进程,进而引起雪崩,这时候 scan命令就有了比较明显的优势; scan命令简介:   SCAN 命令(在Redis2.8版本引入)是一个基于游标的迭代器(cursor based iterator): SCAN 命令每次被调用之后, 都会向用户返回一个新的游标, 用户在下次迭代时需要使用这个新游标作为 SCAN 命令的游标参数, 以此来延续之前的迭代过程,当 SCAN 命令的游标参数被设置为 0 时, 服务器将开始一次新的迭代, 而当服务器向用户返回值为 0 的游标时, 表示迭代已结束。    命令格式如下: SCAN cursor [MATCH pattern] [COUNT count]   其中cursor为游标,MATCH和COUNT为可选参数; 迭代过程示例如下(查询以PLFX-ZZSFP-为前缀的key): 127.0.0.1:6379> scan 0 match PLFX-ZZSFP-* count 5 1) "1536" 2) (empty list or set) 127.0.0.1:6379> scan 1536 match PLFX-ZZSFP-* count 5 1) "1280" 2) (empty list or set) 127.0.0

SQL Server2008从入门到精通pdf

|▌冷眼眸甩不掉的悲伤 提交于 2020-01-22 10:38:08
下载地址: 网盘下载 内容介绍 编辑 《SQL Server 从入门到精通》从初学者的角度出发,通过通俗易懂的语言、丰富多彩的实例,详细地介绍了SQLServer2008开发应该掌握的各方面技术。全书共分15章,包括数据库基础、初识SQLServer2008、管理SQLServer2008、创建与管理数据库、操作数据表与视图、维护SQLServer2008、T—SQL概述、SQL数据语言操作、SQL数据查询、存储过程和触发器、索引与数据完整性、游标的使用、SQL函数的使用、SQL中的事务、基于C#的企业ERP管理系统。书中所有知识都结合具体实例进行介绍,涉及的程序代码给出了详细的注释,可以使读者轻松领会SQLServer2008的精髓,快速提高开发技能。   第1篇 基 础 知 识   第1章 数据库基础 3   视频讲解:25分钟   1.1 数据库系统简介 4   1.1.1 数据库技术的发展 4   1.1.2 数据库系统的组成 4   1.2 数据库的体系结构 5   1.2.1 数据库三级模式结构 5   1.2.2 三级模式之间的映射 5   1.3 数据模型 6   1.3.1 数据模型的概念 6   1.3.2 常见的数据模型 6   1.3.3 关系数据库的规范化 7   1.3.4 关系数据库的设计原则 7   1.3.5 实体与关系 8   1.4

pymysql模块的使用

£可爱£侵袭症+ 提交于 2020-01-22 06:35:03
  实现:使用Python实现用户登录,如果用户存在则登录成功(假设该用户已在数据库中) import pymysql user = input('请输入用户名:') pwd = input('请输入密码:') # 1.连接 conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='', db='db8', charset='utf8') # 2.创建游标 cursor = conn.cursor() #注意%s需要加引号 sql = "select * from userinfo where username='%s' and pwd='%s'" %(user, pwd) print(sql) # 3.执行sql语句 cursor.execute(sql) result=cursor.execute(sql) #执行sql语句,返回sql查询成功的记录数目 print(result) # 关闭连接,游标和连接都要关闭 cursor.close() conn.close() if result: print('登陆成功') else: print('登录失败') execute() 之 slq注入: 最后那一个空格,在一条sql语句中如果遇到select * from userinfo

16-pymysql模块的使用

假装没事ソ 提交于 2020-01-22 06:34:43
本节重点: pymysql的下载和使用 execute()之sql注入 增、删、改:conn.commit() 查:fetchone、fetchmany、fetchall 一、pymysql的下载和使用   之前我们都是通过MySQL自带的命令行客户端工具mysql来操作数据库,那如何在python程序中操作数据库呢?这就用到了pymysql模块,该模块本质就是一个套接字客户端软件,使用前需要事先安装。 (1)pymysql模块的下载 pip3 install pymysql (2)pymysql的使用 数据库和数据都已存在 # 实现:使用Python实现用户登录,如果用户存在则登录成功(假设该用户已在数据库中) import pymysql user = input('请输入用户名:') pwd = input('请输入密码:') # 1.连接 conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='', db='db8', charset='utf8') # 2.创建游标 cursor = conn.cursor() #注意%s需要加引号 sql = "select * from userinfo where username='%s' and pwd='%s'" %(user,

python D40 pymsql和navicat

|▌冷眼眸甩不掉的悲伤 提交于 2020-01-22 06:34:22
一 IDE工具介绍(Navicat)   生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具,我们使用Navicat工具,这个工具本质上就是一个socket客户端,可视化的连接mysql服务端的一个工具,并且他是图形界面版的。我们使用它和直接使用命令行的区别就类似linux和windows系统操作起来的一个区别。 二 MySQL数据备份 #1. 物理备份: 直接复制数据库文件,适用于大型数据库环境。但不能恢复到异构系统中如Windows。 #2. 逻辑备份: 备份的是建表、建库、插入等操作所执行SQL语句,适用于中小型数据库,效率相对较低。 #3. 导出表: 将表导入到文本文件中。   一、使用mysqldump实现逻辑备份 #语法: # mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql #示例: #单库备份 mysqldump -uroot -p123 db1 > db1.sql mysqldump -uroot -p123 db1 table1 table2 > db1-table1-table2.sql #多库备份 mysqldump -uroot -p123 --databases db1 db2 mysql db3 > db1_db2_mysql_db3.sql #备份所有库 mysqldump -uroot

Navicat工具、pymysql模块

馋奶兔 提交于 2020-01-22 06:34:04
cls超 Navicat工具、pymysql模块 阅读目录 一 IDE工具介绍 二 pymysql模块 一 IDE工具介绍(Navicat)   生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具,我们使用Navicat工具,这个工具本质上就是一个socket客户端,可视化的连接mysql服务端的一个工具,并且他是图形界面版的。我们使用它和直接使用命令行的区别就类似linux和windows系统操作起来的一个区别。 下载链接:https://pan.baidu.com/s/1bpo5mqj   Navicat的安装教程看这篇博客: https://www.cnblogs.com/clschao/articles/10022040.html    掌握: #1. 测试+链接数据库 #2. 新建库 #3. 新建表,新增字段+类型+约束 #4. 设计表:外键 #5. 新建查询 #6. 备份库/表 #注意: 批量加注释:ctrl+?键 批量去注释:ctrl+shift+?键 二 pymysql模块   我们要学的pymysql就是用来在python程序中如何操作mysql,它和mysql自带的那个客户端还有navicat是一样的,本质上就是一个套接字客户端,只不过这个套接字客户端是在python程序中用的,既然是客户端套接字,应该怎么用,是不是要连接服务端