下面是一个游标的实例,方便初学者学习,也可以防止自己忘记 。
IF EXISTS(SELECT 1 FROM SYSOBJECTS WHERE [NAME] = 'HEHE')
DROP PROCEDURE HEHE
GO
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE HEHE
AS
BEGIN
--创建游标
DECLARE XQYG_ZS_CURSOR CURSOR local SCROLL DYNAMIC --声明一个可循环操作的游标
FOR SELECT [NAME] FROM tableName
OPEN XQYG_ZS_CURSOR --打开游标
DECLARE @WORDS_LIST SYSNAME --词汇
FETCH NEXT FROM XQYG_ZS_CURSOR INTO @WORDS_LIST --游标移到第一个记录
WHILE(@@FETCH_STATUS = 0) --检查游标是不是最后一个,如果不是则进行中间的程序
BEGIN
--一段处理程序段
insert into testHe(id,[name],[password],[address])
values('1','jj','963',@WORDS_LIST)
FETCH NEXT FROM XQYG_ZS_CURSOR INTO @WORDS_LIST --游标移到下一个记录
END
CLOSE XQYG_ZS_CURSOR --关闭游标
DEALLOCATE XQYG_ZS_CURSOR --释放游标
end
--exec HEHE
--select * from testHe
分享到:
相关推荐
以下是一个简单的游标声明和使用的例子: ```sql DECLARE -- 声明变量来存储游标结果 v_emp_id NUMBER; v_emp_name VARCHAR2(50); -- 定义游标 CURSOR emp_cursor IS SELECT employee_id, first_name FROM ...
FETCH NEXT FROM stu_corsor --下一条记录 FETCH PRIOR FROM stu_corsor --上一条记录
1. **声明游标**:定义一个游标并关联到一个查询。 2. **打开游标**:使游标准备好读取数据。 3. **从游标中获取数据**:通常使用`FETCH`命令来获取当前行的数据。 4. **循环处理数据**:使用循环结构来依次处理每一...
函数是预定义的代码块,接受零个或多个参数,并返回一个值。Oracle提供了丰富的内置函数,如数学函数(如ROUND、TRUNC)、字符串函数(如SUBSTR、INSTR)和日期时间函数(如SYSDATE、ADD_MONTHS)。自定义函数也可以...
下面通过一个简单的示例来演示如何使用隐式游标属性来判断对雇员工资的更新是否成功。 ```sql SET SERVEROUTPUT ON; BEGIN UPDATE emp SET sal = sal + 100 WHERE empno = 1234; IF SQL%FOUND THEN DBMS_OUTPUT....
当尝试将多行数据插入单个变量时,会触发一个错误。例如,`SELECT column INTO variable FROM table`,如果查询返回多行,会抛出`TOO_MANY_ROWS`异常。 **显式游标**则需要程序员手动声明、打开、读取、关闭。显式...
- **Ref游标**:返回一个游标引用,可用于函数返回多个值的情况。 3. **FOR UPDATE 游标**:在查询结果上加上锁,以便后续更新数据。 4. **FOR DELETE 游标**:用于标记将要删除的数据行。 #### 四、Oracle游标的...
接下来,我们声明了一个名为`Cur`的游标,它将遍历`temp1`表中的子串ID和名称。游标声明使用了`DECLARE CURSOR`语句,并指定了要执行的SELECT查询: ```sql Declare Cur Cursor For select substring(id,0,7) as ...
假设原始数据表为`tb`,以下是一个具体的示例: ```sql -- 创建一个新的表,使用IDENTITY属性自动填充一个列 SELECT id = IDENTITY(INT, 1, 1), * INTO #tempTable FROM tb; DECLARE @i INT, @cnt INT; SELECT @i ...
示例还提到了定义两个游标,其中一个用于获取部门ID列表,另一个用于根据这些ID获取具体的数据。 ```sql DECLARE CURSOR v_deptno_cursor IS SELECT DISTINCT dept.deptno FROM dept; CURSOR v_employee_...
最后一个示例展示了如何使用`EXIT WHEN`语句来提前退出循环,当游标没有更多数据时停止遍历。 ```sql CREATE OR REPLACE PROCEDURE PROC_STU1_1 AS BEGIN DECLARE CURSOR cur_stu IS SELECT stu_no, stu_...
在上述示例中,我们可以将游标和排名逻辑封装到一个过程里,使其更易于调用和管理。例如: ```sql CREATE OR REPLACE PROCEDURE rank_data ( p_ranking_column VARCHAR2 ) AS CURSOR cursor_name IS SELECT ...
下面展示一个简单的存储过程示例,该过程接受一个部门编号作为输入参数,并返回该部门的所有员工信息: ```sql CREATE OR REPLACE PROCEDURE GetEmpByDept(deptno IN NUMBER) IS BEGIN FOR emp_rec IN (SELECT * ...
Scan命令需要传入一个游标作为参数,返回下一次迭代的游标和本次迭代的所有key。Scan命令不保证每次迭代都能返回固定数量的数据,有时甚至一次迭代返回的数据量为0。 假设需要从Redis中获取匹配“temp_”前缀的key...
以下是一个简单的示例: ```java CallableStatement cs = connection.prepareCall("{ call get_data(?) }"); cs.registerOutParameter(1, OracleTypes.CURSOR); cs.execute(); ResultSet rs = (ResultSet) cs....
以上只是对Oracle游标使用的一个简要概述,具体到《Oracle 游标使用大全》这份文档,可能会包含更详尽的示例、技巧和案例,帮助开发者更好地理解和运用Oracle游标。通过学习和实践,我们可以提升数据库操作的效率和...
以下是一个示例: ```sql DECLARE v_ename EMP.ENAME%TYPE; v_salary EMP.SAL%TYPE; CURSOR c_emp IS SELECT ename, sal FROM emp; BEGIN OPEN c_emp; FETCH c_emp INTO v_ename, v_salary; -- 处理数据... ...
以下是一个简单的示例,演示如何使用游标来删除员工并记录其信息: ```sql CREATE OR REPLACE PROCEDURE fire_employee(p_empno IN NUMBER) AS v_ename EMP.ENAME%TYPE; BEGIN SELECT ename INTO v_ename FROM ...
首先,我们可以声明一个游标,该游标关联到一个SELECT语句,该语句返回所有成绩低于平均分的学生的信息。然后,我们打开游标,使用`FETCH`语句逐行检索数据,并根据每个学生的成绩进行相应的更新。最后,我们关闭并...