当前位置:首页 » 存储配置 » 存储过程loop

存储过程loop

发布时间: 2022-07-17 01:03:13

㈠ oracle存储过程怎么写循环

写循环的操作方法和步骤如下:

1、第一步,编写存储过程的整体结构,然后定义变量,见下图。

㈡ oracle 存储过程的loop <<

<<>>
这样的写法是个标记,无实际意义,如果脚本中有GOTO语句,走到GOTO语句后会直接跳转到标记所在的行。

㈢ 如何在存储过程中使用Loop

ascursor 应该是as cursor
w_name varchar2 这点应该声明数据类型的大小,如:varchar2(50);同时变量名最好不要和字段名同名。
begin dbms_output.put_line(w_name); end; 这儿可以不用写begin end;直接写dbms_output.put_line(w_name);
如:
CREATE OR REPLACE PROCEDURE TEST_FORINLOOP() AS
CURSOR TEST_CURSOR IS
SELECT W_NAME FROM WORK_ORACLE_TEST;
V_NAME WORK_ORACLE_TEST%Rowtype;
BEGIN
FOR V_NAME IN TEST_CURSOR LOOP
DBMS_OUTPUT.PUT_LINE(V_NAME);
END LOOP;
END TESTFORINLOOP;
也可以:
CREATE OR REPLACE PROCEDURE TEST_FORINLOOP() AS
CURSOR TEST_CURSOR IS
SELECT W_NAME FROM WORK_ORACLE_TEST;
V_NAME VARCHAR2(50);
BEGIN
FOR V_NAME IN TEST_CURSOR LOOP
DBMS_OUTPUT.PUT_LINE(V_NAME);
END LOOP;
END TESTFORINLOOP;

㈣ oracle存储过程 loop字符串遍历

sql">declare
xvarchar2(20);
v_lengthint;
yint;
v_strvarchar2(1);
begin
x:='wqr3331412rr';
selectlength(x)intov_lengthfromal;
y:=1;
whiley<=v_lengthloop
selectsubstr(x,y,1)intov_strfromal;
dbms_output.put_line(v_str);
y:=y+1;
endloop;
end;

直接运行吧,结果如图

㈤ mysql里的存储过程是怎样循环的

declare storeId varchar(10);
在存储过程中创建游标,这个游标里面存了你所有要循环的数据,集合:
declare diy_cursor cursor for
select store_id from t_b_store;

open diy_cursor;--打开游标
diy_loop:loop ---这里开始循环
FETCH diy_cursor into storeId; --提取本次循环的数据,保存在storeId中
if done = 1 then --done是在存储过程开始的时候定义的一个整形变量
leave diy_loop;---如果游标中的数据提取完毕,就自动跳出这个循环end if;
----在这里用你循环取到的storeId做你想做的事情,就是写你的sql啦---
end loop; --循环结束
close diy_loop; --关闭游标

㈥ 怎么写存储过程

一、整体格式。存储过程的格式如下:
CREATE PROCEDURE [creator.]"proc_name" ( /* parameters,... */ )
/* RESULT ( column-name,... ) */
BEGIN
;
END
其中creator是用户名,比如dba;proc_name是你自己起的过程名;后面的参数可有可无,视自己情况定,如果有格式如(a integer,b char(50));再下面的RESULT应该是返回值,这个没用过不知道怎么回事!
二、内容。把这些都写好了可能是这样:
CREATE PROCEDURE dba.myProcere ( @a integer,@b char(50))
BEGIN
;
END
但是这样子还是不能编译的,因为整个过程体是空的,而我学习的结果是过程中至少要有一个SQL语句。所以要这样写才不会出错:
CREATE PROCEDURE dba.myProcere ( a integer,b char(50))
BEGIN
SELECT * FROM MyTable
END
三、语法。
1、分号。在写的过程中最郁闷的问题是分号!最后发现好像是这样:
每一句都要加分号,不管是SQl语句还是其它的什么语句,但是最后保存后最后一句的分号会被自动删除!(我用的是Sybase的Sybase Central)。
2、定义变量。
格式为Declare @varName integer;(注意有分号!)“@”号好像可有可无!
3、SELECT语句。
格式为:
SELECT Count(*) INTO @varName FROM MyTable WHERE id = @a;
4、if语句。
格式为:
if(varName > 0) then
return
end if;(注意还有分号!)
5、循环语句。
格式为:
loop
……
end loop;(注意分号!)
6、设置变量值。
格式为:
set @varName = 10;
set @varName = @varName2;
7、字符串。
Declare myString char(50);
set @myString = 'Hello!';
要用单引号!
8、定义游标。
格式为:
declare MyCursor dynamic scroll cursor for
select …… from …… where ……;
9、打开、使用和关闭游标。
Open MyCursor;
fetch next MyCursor into ……;
Close MyCursor;
10、调用方法。
string ls_name="test"
DECLARE ProcName1 PROCEDURE FOR ProcName2
@wg_wellid=2,@wg_wgid=1,@wg_stringsid=1,@bha_wellid=2,@bha_name=:ls_name;
execute ProcName1 ;
close ProcName1 ;
其中ProcName1 是调用程序中自定义的过程名,ProcName2是数据库中存储过程的名字,下面的传入的参数。

㈦ oracle存储过程for in loop的问题

ascursor 应该是as cursor
w_name varchar2 这点应该声明数据类型的大小,如:varchar2(50);同时变量名最好不要和字段名同名。
begin dbms_output.put_line(w_name); end; 这儿可以不用写begin end;直接写dbms_output.put_line(w_name);
如:
CREATE OR REPLACE PROCEDURE TEST_FORINLOOP() AS
CURSOR TEST_CURSOR IS
SELECT W_NAME FROM WORK_ORACLE_TEST;
V_NAME WORK_ORACLE_TEST%Rowtype;
BEGIN
FOR V_NAME IN TEST_CURSOR LOOP
DBMS_OUTPUT.PUT_LINE(V_NAME);
END LOOP;
END TESTFORINLOOP;
也可以:
CREATE OR REPLACE PROCEDURE TEST_FORINLOOP() AS
CURSOR TEST_CURSOR IS
SELECT W_NAME FROM WORK_ORACLE_TEST;
V_NAME VARCHAR2(50);
BEGIN
FOR V_NAME IN TEST_CURSOR LOOP
DBMS_OUTPUT.PUT_LINE(V_NAME);
END LOOP;
END TESTFORINLOOP;

㈧ oralce存储过程怎么用loop进行双重循环呀

全部过程都给出来,光这一段看不出来

㈨ 新手求教: 一个oracle存储过程中使用CURSOR 和loop循环 怎样写可以实现:如果某此loop循环,发生异常报-O

CREATE OR REPLACE PROCEDURE p_test_emp is

CURSOR c1 is
select empno, ename from emp;
t_c1 c1%rowtype;
err exception;
begin
open c1;
loop
FETCH c1
INTO t_c1;
if (c1%found) then
insert into emp_test (empno, ename) values (t_c1.empno, t_c1.ename);
commit;
else
raise err;(这个err 需要在前面定义的,类型为异常)
end if;
end loop;
close c1;
EXCEPTION
when err then
(这里可以写上你需要的提示)
WHEN OTHERS THEN
rollback;
end;
这样写的好处就是 当里面发生错误的时候直接跳到异常中的err 不会中断这段代码的执行。
楼上说的把exeception放到循环里面也是不行的,主要就是要修改exeception中,不能rollback,否则的一定执行不下去。如果有疑问我们继续讨论。

㈩ 存储过程loop exit mysql中没有exit么

visual foxpro吗,loop是回到循环条件判断是否能满足循环条件继续循环,exit则是退出一层循环,执行循环后面的语句

热点内容
我的世界ec服务器消失了 发布:2024-10-07 21:48:30 浏览:661
pythonziptodict 发布:2024-10-07 21:36:09 浏览:790
linux操作系统教程 发布:2024-10-07 21:16:54 浏览:280
摩托音响怎么配置 发布:2024-10-07 21:12:37 浏览:348
本田思域哪个配置好 发布:2024-10-07 21:04:11 浏览:347
算法期末试卷 发布:2024-10-07 20:51:04 浏览:808
编译期错误提示 发布:2024-10-07 20:07:23 浏览:297
阿里云服务器打开慢 发布:2024-10-07 20:06:33 浏览:578
磁存储行业的前景 发布:2024-10-07 20:01:29 浏览:549
android对象序列化 发布:2024-10-07 20:01:28 浏览:760