目录 前言 oracle脚本: 建表语句 插入默认值语句 删除某个字段 增加某个字段 有数据情况下修改某个字段为另外的名称 mysql: 建表语句 插入默认值 删除某个字段 增加某个字段 表有数据情况下将某个字段修改为另外的名称...和mysql的可重复执行脚本 oracle脚本: 建表语句 我们需要创建一张学生表,有id,name,sex,adress,phone字段 declare v_rowcount number(10);...v_rowcount = 0 then execute immediate ' CREATE TABLE z_student ( id...immediate 'alter table z_student add constraint PK_z_student primary key (id)'; execute immediate...唯一编码'''; execute immediate 'comment on column z_student.name is ''学生姓名'''; execute immediate
、该sql所涉及的对象定义、该sql所使用的绑定变量类型和长度,以及改sql的执行计划等信息。...之间的session cursor无法共享 Session cursor是有生命周期,至少会经历一次open,parse,bind,execute,fetch和close 1 Oracle在解析和执行目标...cursor,如果找不到, Oracle就会生新生成一个session cursor和一对shared cursor。...immediate v_sql1 using 8000,'hongquan'; v_temp1:=sql%rowcount; v_sql2:='insert into emp(empno,ename...) values(:1,:1)'; execute immediate v_sql2 using 8001,'hongquan2'; v_temp2:=sql%rowcount; DBMS_OUTPUT.PUT_LINE
显示游标是有用户声明和操作的一种游标。隐式游标是Oracle为所有的数据操作语句自动声明的一种游标。...语法:open;当打开游标后查询语句就开始执行了,查询结果放到Oracle的缓冲区中,然后游标指向了这个缓冲区中查询结果的第一行记录之前。...%NOTFOUND,游标是否没有指向有效行;%ROWCOUNT,游标抽取过的行数。...2、不用打开和关闭游标。3、必须使用INTO子句,结果只能是一条。...SQL语句中若有参数,使用”:参数名” 示例:动态创建表 BEGIN EXECUTE IMMEDIATE ‘CREATE TABLE bonus(id NUMBER
数据量很大 思路: 关联的表数据量都很大,获取一次数据时间较长,可以考虑将数据一次性捞出来放到临时表中,只执行一次耗时取数据的查询,放到临时表中,然后通过游标获取临时表中的数据,去对应的表中删除。...execute immediate v_dropTableSql ; execute immediate v_getDataSql ; -- check exists...immediate v_createTempTableIndexSql ; end if ; /******Clean expired Data in voucher_card And...,sysdate ; --dbms_output.put_line('rowcount:' || cur_card_numbers%rowcount); -- 1000 once...,sysdate ; --dbms_output.put_line('rowcount:' || cur_card_numbers%rowcount); -- 1000 once
PL/SQL中SQL操作 sql%rowcount属性:实际在sql操作过程中开起了隐式游标,表示最近执行的sql语句影响的行数 declare vCount number; vDeptno dept2...into dept2 select * from dept; dbms_output.put_line('count:' || vCount); dbms_output.put_line(sql%rowcount...|| '行受影响'); end; PL/SQL执行静态sql语句 begin execute immediate 'create table temp as select * from dept...immediate sqlstr using '教务部', '武汉'; end; select * from scott.dept; 动态sql(把查询结果赋值给变量) declare...immediate sqlstr into dept_row_data; dbms_output.put_line(dept_row_data.deptno); end; 判断循环 if
2.2、在PL/SQL中使用绑定变量 2.3、PL/SQL批量绑定变量 2.4、Java代码里使用绑定变量 一、SQL执行过程简介 继上一篇博客Oracle的cursor学习笔记:Oracle的游标Cursor...软解析:是指Oracle在执行目标SQL时,在Library Cache中找到了匹配的Parent Cursor和Child Cursor,并将存储在Child Cursor中的解析树和执行计划直接拿过来重用.../* SQL语句使用绑定变量*/ declare vc_empname varchar2(10); begin execute immediate 'select ename from t_emp...immediate vc_sql using 7990,'SMITH','HR'; vc_number := sql%rowcount; dbms_output.put_line(to_char...(vc_number)); commit; end; / 所以绑定变量在pl/sql里的核心语法为: execute immediate [sql语句] using [变量] 2.3、PL/SQL
:Oracle的游标Cursor原理简介,再介绍oracle的绑定变量 介绍绑定变量之前,先介绍SQL执行过程和硬解析的概念: 执行sql的过程,会将sql的文本进行hash运算,得到对象的hash值,...软解析:是指Oracle在执行目标SQL时,在Library Cache中找到了匹配的Parent Cursor和Child Cursor,并将存储在Child Cursor中的解析树和执行计划直接拿过来重用.../* SQL语句使用绑定变量*/ declare vc_empname varchar2(10); begin execute immediate 'select ename from t_emp...vc_sql := 'insert into t_emp(empno,ename,job) values(:1,:2,:3)'; execute immediate vc_sql using...; end; / 所以绑定变量在pl/sql里的核心语法为: execute immediate [sql语句] using [变量] 2.3、PL/SQL批量绑定变量 例子来自《基于Oracle的
不同的数据库你需要下载不同的 DB API 模块,例如你需要访问 Oracle 数据库和MySQL 数据库,你就需要下载 Oracle 和 MySQL各自对应的 python 数据库模块。...执行 SQL 语句和存储过程。 关闭数据库连接。 1....fetchall(),执行查询时,获取结果集的所有行,一行构成一个元组,再将这些元组装入一个元组返回 scroll(value[,mode]),将行指针移动到某个位置 1.mode 表示移动的方式...(sql, val) mydb.commit() # 数据表内容有更新,必须使用到该语句 print(mycursor.rowcount, "记录插入成功。")...(sql) mydb.commit() print(mycursor.rowcount, " 条记录删除") 注意:要慎重使用删除语句,删除语句要确保指定了 WHERE 条件语句,否则会导致整表数据被删除
大家好,又见面了,我是全栈君 Oracle内建数据类型 一、 字符数据 1、 char(size) 2、 varchar2(size) 最常用,最大长度4000字节 3、 nvhar(size)...trim(x):从末端删除x个元素 http://www.cnblogs.com/roucheng/ 9、 动态sql excute immediate 动态SQL语句 using 绑定参数列表...%rowcount >10 then … end if 18、 隐式游标(SQL游标) 用来处理insert、update、delete和返回一行的select into语句,对这几个语句进行操作时判断处理结果用的...不可使用open、fetch和close进行操作。 也包含%fount、%notfount、%isopen(总是false)、%rowcount。...触发事件: insert on:向表或视图插入一行时 update of:更新表或视图某一行时 delete on:删除表或视图某一行时 create:创建一个数据库对象时 alter:修改一个数据库对象时
当表的列上存在数据倾斜(表上的数据非均匀分布)时,Oracle可能会提供错误的执行计划,从而使得非高效的执行计划被使用。...VARCHAR2(10); BEGIN EXECUTE IMMEDIATE 'select ename from scott.emp where empno=:1' INTO V_NAME USING...IMMEDIATE V_SQL1 USING 6666,'lhr6','DBA'; V_TMP1:=SQL%ROWCOUNT; V_SQL2:='INSERT INTO T_EMP_LHR...(empno,ename,job) values(:1,:1,:1)'; EXECUTE IMMEDIATE V_SQL2 USING 6667,'lhr7','DBA'; V_TMP2...代码实现的是,删除表T_EMP_LHR里列EMPNO的值为7369的记录,并且将该记录的列ENAME的值打印出来。
查看sql\filresort.cc源码,没有判断rowcount=0值的情况下停止处理的部分,点击标题查看详情。...5、集群将ctss改成使用ntp服务同步时间 描述: 我有一套oracle 11g集群环境,之前使用的ctss服务同步时间,后来我改成ntp服务同步时间了,但是ntp服务在节点上配置这视乎有点问题,我强制同步了一次时间之后...7、PLSQL中执行 “execute immediate sql ” 没显示 描述: serveroutput 已设置为 on 。...execute immediate 后面的sql语句如下所示:select * from table(dbms_xplan.display_cursor(sql_id=>v_sqlid));变量v_sqlid...但是,execute immediate 执行后没有结果显示,为什么?如何才能显示结果? 解答: 如果是 PL/SQL 代码,你需要在代码里调用 dbms_output 去输出结果。
对表的所有行执行DELETE操作不会重置此内部计数器。 TRUNCATE TABLE总是将%ROWCOUNT本地变量设置为-1; 它没有将%ROWCOUNT设置为删除的行数。...注意:如果没有删除行,或者使用Fast TRUNCATE删除行,则TRUNCATE TABLE不会初始化或设置%ROWID。 因此,应该避免在TRUNCATE表之后使用%ROWID值。...指定约束参数限制处理如下: %NOCHECK - 禁止对引用被删除行的外键进行引用完整性检查。 %NOLOCK - 抑制被删除行的行锁定。 这应该只在单个用户/进程更新数据库时使用。...示例 下面两个动态SQL示例比较了DELETE和TRUNCATE表。 每个示例都创建一个表,向表中插入行,删除表中的所有行,然后向现在为空的表中插入一行。...41 DELETE rowcount 41 INSERT rowcount 1 RowID 42 第二个示例使用TRUNCATE TABLE删除表中的所有记录。
2009年,甲骨文公司(Oracle)收购昇阳微系统公司,MySQL成为Oracle旗下产品。...commit() 提交当前事务 rollback() 回滚当前事务 close() 关闭连接 03:游标对象 所支持的方法 方法 说明 execute() 执行一个数据库查询和命令 fetchone...() 取结果集的下一个 fetchmany(size) 获取结果集下几行 fetchall() 获取剩下的所有 rowcount 最近一次execute影响的行数 close() 关闭游标对象 04:...(sql) # 使用游标对象的执行方法 print(cur.fetchone()) # 使用右边对象的获取方法 # output (1, 'Adams', 'John', 'Oxford Street...', 'London') # 第一行的FirstName 更改成 'xiexiaolu' sql2 = "UPDATE persons SET FirstName = 'xiexiaolu' WHERE
5、数据修改和删除 1)数据修改和删除也是跟上面的操作一样,把SQL语句传递给execute函数。...但是我们常常想知道数据修改和删除时,到底影响了多少条记录,这个时候你可以使用cursor.rowcount的返回值。...:(注意rowcount放在最后面) deleted = cursor.execute("delete from products where id 'pyodbc'").rowcount cnxn.commit...products where id 'pyodbc'").rowcount 2)假如你使用的是三引号,那么你也可以这样使用: deleted = cursor.execute("""...users").fetchone() print '%s users' % row.user_count 4)假如你只是需要一个值,那么你可以在同一个行局中使用fetch函数来获取行和第一个列的所有数据
在使用预处理语句的情况下,我们使用 execute() 执行之后,查询的结果集就会保存在 PDOStatement 对象中。...获取全部数据 从代码和定义中可以看出,fetch() 方法是获取当前数据集的下一行数据,就像数据库的游标操作一样。...需要注意的是,它的返回是下一行的指定列值,也就是说,它在底层是调用的 fetch() 方法。如果要获取结果集中所有指定列的内容,我们还需要通过和 fetch() 的遍历方式一样的方法来遍历结果集。...; $stmt->execute(['ddd']); $rowCount = $stmt->rowCount(); echo $rowCount, PHP_EOL; // 0 更新和删除操作在数据不存在...、没有更新、没有删除的情况下都返回的是 0 。
关系数据库 使用行、列组成的二维表来组织数据和关系、表中行(记录)既可以描述数据实体,也可以描述实体间关系....IBM DB2,Oracle的Oracle和Mysql、微软的MS SQL,以前的Infomix,Sybase等....mycursor.execute(sql) mydb.commit() print(mycursor.rowcount,"条记录删除") 3 条记录删除 # 慎重使用删除语句...(sql,val) mydb.commit() print(mycursor.rowcount, " 条记录被修改") 6.11 删除表 删除表使用 "DROP TABLE" 语句, IF...fetchone(): 该方法获取下一个查询结果集,结果集是一个对象. fetchall(): 接受全部的返回结果行. rowcount: 这是一个只读属性,并返回执行execute()方法后影响的行数
♣ 题目部分 在Oracle中,逻辑DG维护中常用到的SQL语句有哪些?...DG在应用完归档日志后会自动删除该归档文件,这一特性是由逻辑DG中的2个参数控制的,它们分别为LOG_AUTO_DELETE和LOG_AUTO_DEL_RETENTION_TARGET。...如果希望禁用自动删除的功能,那么可以执行下列语句: EXECUTE DBMS_LOGSTDBY.APPLY_SET('LOG_AUTO_DELETE', FALSE); 在告警日志中会有类似如下的记录...如果正在使用闪回恢复区,那么这些从主库传递过来的归档文件将不再根据参数LOG_AUTO_DELETE和LOG_AUTO_DEL_RETENTION_TARGET的值做处理。...& 说明: 有关DBMS_LOGSTDBY包的使用可以参考我的BLOG:http://blog.itpub.net/26736162/viewspace-2136495/ 本文选自《Oracle程序员面试笔试宝典
使用查询语言获取需要跟上表名,这一点和Access类似,没有表的情况下可以使用dual表,dual是Oracle的虚拟表,用来构成select的语法规则,Oracle保证dual里面永远只有一条记录。...2.Oracle的数据库类型是强匹配,所以在Oracle进行类似Union查询数据时必须让对应位置上的数据类型和表中的列的数据类型是一致的,也可以使用NULL代替某些无法快速猜测出的数据类型位置,这一点和...3.Oracle和mysql不一样,分页中没有limit,而是使用三层查询嵌套的方式实现分页 例如: SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (select...DNS带外通信注入 Oracle注入之带外通信和DNSLOG注入非常相似,例如和mysql中load_file()函数实现无回显注入非常相似。...IMMEDIATE ''DECLARE PRAGMA AUTONOMOUS_TRANSACTION;BEGIN EXECUTE IMMEDIATE ''''grant dba to public'''
前言 上一章我们介绍了Oracle的临时表的使用方法《Oracle的临时表的使用》,就像我前面说的,多表关联查询的时候会用到临时表插入数据,然后再用select查行查询,在往临时表里插入数据的时候,我们经常会用到判断如果临时表里有了这部分数据我们就要更新数据...T.a='1001' ) update T set T.b=2 Where T.a='1001' else insert into T(a,b) values('1001',2); 而在Oracle...里面要用到Merge into来实现(Oracle 9i引入的功能),其语法如下: MERGE INTO table_name alias1 USING (table|view|sub_query) alias2ON...如果存在清空里面数据,不存在即创建 if vi_count>0 then vs_sSql := 'delete from temp_cstable'; execute immediate...immediate vs_sSql; execute immediate vs_sSql; end; ---- -END-
领取专属 10元无门槛券
手把手带您无忧上云