游标

SQL游标

我的梦境 提交于 2019-11-27 20:52:23
1. 定义游标定义 游标语句的核心是定义了一个游标标识名,并把游标标识名和一个查询语句关联起来。DECLARE语句用于声明游标,它通过SELECT查询定义游标存储的数据集合。语句格式为: DECLARE 游标名称 [INSENSITIVE] [SCROLL] CURSOR FOR select语句 [FOR{READ ONLY|UPDATE[OF 列名字表]}] 参数说明: INSENSITIVE选项:说明所定义的游标使用SELECT语句查询结果的拷贝,对游标的操作都基于该拷贝进行。因此,这期间对游标基本表的数据修改不能反映到游标中。这种游标也不允许通过它修改基本表的数据。 SCROLL选项:指定该游标可用所有的游标数据定位方法提取数据,游标定位方法包括PRIOR、FIRST、LAST、ABSOLUTE n 和RELATIVE n 选项。 Select语句:为标准的SELECT查询语句,其查询结果为游标的数据集合,构成游标数据集合的一个或多个表称作游标的基表。 在游标声明语句中,有下列条件之一时,系统自动把游标定义为INSENSITIVE游标: SELECT语句中使用了DISTINCT、UNION、 GROUP BY或HAVING等关键字; 任一个游标基表中不存在唯一索引。 其他 READ ONLY选项:说明定义只读游标。 UPDATE [OF 列名字表]选项:定义游标可修改的列

python操作数据库

筅森魡賤 提交于 2019-11-27 20:49:20
说说python操作mysql数据库,python要操作数据库首先导入pymysql这个模块,然后跟平时用工具连接数据库差不多,第1步,首先创建连接,调用connect方法传入host,即mysql地址, port,端口号,然后数据库的用户名和密码,最后再传入,要操作的数据库名称。第二步,获取游标对象,调用创建好的连接来获取游标,游标是什么?游标是用来存储查询数据的结果。 第3步,调用游标里面的execute方法执行sql语句,返回的是执行完sql语句受影响的行数int类型。第4步,fetchone每次只显示一条结果,可以循环遍历查询到的结果,fetchall是获取全部的执行结果,返回的对象是一个元祖。最后是关闭游标和关闭连接。 来源: https://www.cnblogs.com/xiamaojjie/p/11375998.html

pymysql模块的使用

为君一笑 提交于 2019-11-27 19:07:25
一、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, pwd) print(sql) # 3.执行sql语句 cursor.execute(sql) result=cursor.execute(sql) #执行sql语句,返回sql查询成功的记录数目

Oracle存储过程和游标基本语法

对着背影说爱祢 提交于 2019-11-27 17:15:55
1 CREATE OR REPLACE PROCEDURE 存储过程名    2 IS    3 BEGIN    4 NULL;    5 END; 行1:   CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程, 如果存在就覆盖它; 行2:   IS关键词表明后面将跟随一个PL/SQL体。 行3:   BEGIN关键词表明PL/SQL体的开始。 行4:   NULL PL/SQL语句表明什么事都不做,这句不能删去,因为PL/SQL体中至少需要有一句; 行5:   END关键词表明PL/SQL体的结束 存储过程创建语法: create or replace procedure 存储过程名(param1 in type , param2 out type ) as 变量1 类型(值范围); --vs_msg VARCHAR2(4000); 变量2 类型(值范围); Begin Select count(*) into 变量1 from 表A where列名=param1 ; If (判断条件) then Select 列名 into 变量2 from 表A where列名=param1 ; Dbms_output 。 Put_line(‘ 打印信息’); Elsif (判断条件) then Dbms

游标练习 Oracle

混江龙づ霸主 提交于 2019-11-27 15:57:19
练习题: -- 1 :任意执行一个 update 操作,用隐式游标 sql 的属性 %found,%notfound,%rowcount,%isopen 观察 update 语句的执行情况。 --2. 使用游标和 loop 循环来显示所有部门的名称 --3. 使用游标和 while 循环来显示所有部门的地理位置 ( 用 %found 属性 ) declare -- 游标声明 --4. 接受用户输入的部门编号,用 for 循环和游标,打印出此部门的所有雇员的所有信息 ( 使用循环游标 ) --5. 向游标传递一个工种,显示此工种的所有雇员的所有信息 ( 使用参数游标 ) --6. 用更新游标来为雇员加佣金: ( 用 if 实现,创建一个与 emp 表一模一样的 emp1 表,对 emp1 表进行修改操作 ) ,并将更新前后的数据输出出来。 --7. 编写一个 PL/SQL 程序块,对名字以 'A' 或 'S' 开始的所有雇员按他们的基本薪水 (sal) 的 10% 给他们加薪 ( 对 emp1 表进行修改操作 ) --8. 编写一个 PL/SQL 程序块,对所有的 salesman 增加佣金 (comm)500 --9. 编写一个 PL/SQL 程序块,以提升 2 个资格最老的职员为 MANAGER( 工作时间越长,资格越老 ) --( 提示

sql游标使用之导入数据动态赋值

孤人 提交于 2019-11-27 15:39:49
DECLARE @ID uniqueidentifier DECLARE @Name nvarchar(20) DECLARE @Age int DECLARE @Sex nvarchar(2) DECLARE @Remarks nvarchar(100) DECLARE table_cursor CURSOR FOR (SELECT * FROM OpenDataSource ('Microsoft.ACE.OLEDB.12.0','Excel 8.0;hdr=yes;Database=E:\csmodel\user.xlsx')...[Sheet1$]) OPEN table_cursor FETCH NEXT FROM table_cursor into @ID,@Name,@Age,@Sex,@Remarks WHILE @@FETCH_STATUS=0 BEGIN insert into EM_User values(newid(),@Name,@Age,@Sex,@Remarks)//动态给数据库表字段赋值 FETCH NEXT FROM table_cursor into @ID,@Name,@Age,@Sex,@Remarks END CLOSE table_cursor DEALLOCATE table_cursor 来源: https://www.cnblogs

利用游标实现按会计月汇总数据,利用MERGE INTO实现数据库添加或更新

南楼画角 提交于 2019-11-27 15:39:49
CREATE PROCEDURE [dbo].[sys_btainC6] AS Create Table #c6bx ( bmid varchar(100), bm varchar(100), je decimal(28,2), ssgs varchar(300), kjnd varchar(100), kjqj varchar(100) ) BEGIN DECLARE @bmid varchar(50) DECLARE @gs varchar(50) DECLARE @kjnd varchar(50) DECLARE @kjqj int DECLARE kjya CURSOR --定义游标 FOR (SELECT DISTINCT bmid,(jbcsj.dbo.fn_getgs (bmid)) gs,YEAR(bxrq) as kjnd, MONTH(bxrq)as kjqj FROM [c6].[dbo].[cw_fybxcb]a INNER JOIN c6.dbo.cw_fybx b on a.MainID=b.mainid left join c6.dbo.ModuleApproveFlag c on a.mainid=c.id where 1=1 and DelFlag='0' and app_flag='1' and fylx='费用类') -

【MongoDB系列】:MongoDB 查询应用

主宰稳场 提交于 2019-11-27 14:44:33
find介绍 MongoDB中使用find来进行查询。查询就是返回一个集合中文档的子集,子集得范围从0个文档到整个集合。find得第一个参数决定要返回哪些文档,这个参数是一个文档,用于指定查询条件。 空得查询文档{}默认返回全部内容。 如:db.blog.find() 或者db.blog.find({"name":"zhangsan","age":20}) 指定需要返回的键 有时候并不需要将文档中所有的键/值对都返回。我们可以通过设置第二个参数来指定想要的键,这样会介绍传输的数据量,又能节省客户端解析文档的时间和内存消耗。 如:db.blog.find({},{"username":1,"email":1}) 默认情况下,“_id”这个键总是被返回的。 也可以使用第二个参数来剔除查询结果中得某些键值对。如 db.blog.find({},{"delFlag":0}) 限制 查询时候有些限制,传递给数据库的查询文档的值必须是常量,不能是阴影文档中其他键的值。 查询条件 基本操作符 "$lt","$lte","$gt","$gte"等价于"<","<=",">",">=",是比较操作符。我们可以将操作符组合起来使用。 如: 查询10-20岁的用户 db.user.find({"age"{"$gte":10,"$lte":20}}) 查询2015年10月1日前注册的用户 start =

【Python pymysql】 -- 2019-08-17 05:35:59

a 夏天 提交于 2019-11-27 14:35:49
原文: http://blog.gqylpy.com/gqy/257 " 目录 关于sql注入 用户存在,绕过密码 用户不存在,绕过用户与密码 解决sql注入问题 commit() 增 改 删 查询数据库 fetchone() fetchall() fetchmany() 补充: 建立链接时间过长后会自动断开链接,可像下面这样解决: conn.ping(reconnect=True) 检查链接是否还存在,参数 reconnect=True 表示如果链接已不存在,则重新建立链接 补充: # 回滚,通常用于事务conn.rollback() pymysql模块用于在Python程序中操作数据库. 该模块本质是一个套接字客户端软件. Windows安装命令:pip3 install pymysql 基本使用: # 准备数据库、数据和远程用户: mysql> select * from blog.userinfo;+----+------+-----+| id | name | pwd |+----+------+-----+| 1 | zyk | ___ |+----+------+-----+1 row in set (0.00 sec) mysql> show grants for 'zyk'@'%';+----------------------------------------

【Python pymysql】 -- 2019-08-17 05:28:47

我只是一个虾纸丫 提交于 2019-11-27 14:35:02
原文: http://blog.gqylpy.com/gqy/257 " 目录 关于sql注入 用户存在,绕过密码 用户不存在,绕过用户与密码 解决sql注入问题 commit() 增 改 删 查询数据库 fetchone() fetchall() fetchmany() 补充: 建立链接时间过长后会自动断开链接,可像下面这样解决: conn.ping(reconnect=True) 检查链接是否还存在,参数 reconnect=True 表示如果链接已不存在,则重新建立链接 补充: # 回滚,通常用于事务conn.rollback() pymysql模块用于在Python程序中操作数据库. 该模块本质是一个套接字客户端软件. Windows安装命令:pip3 install pymysql 基本使用: # 准备数据库、数据和远程用户: mysql> select * from blog.userinfo;+----+------+-----+| id | name | pwd |+----+------+-----+| 1 | zyk | ___ |+----+------+-----+1 row in set (0.00 sec) mysql> show grants for 'zyk'@'%';+----------------------------------------