sql循环执行存储过程
执行带参数的存储过程的方法如下:
Exec sp_configure 'allow updates',1 --允许更新系统表。
exec dbo.User_ChangeObjectOwnerBatch 'OldOwner','dbo'
以上是两个例子。
SQL Server中执行带参数的存储过程的方法是:
EXEC 存储过程名字 '参数1','参数2',数值参数
EXEC 是一个关键字。
字符串参数使用单引号括起来,数值参数不需要使用单引号
② sql 循环调用存储过程
你的语句里,@randCardID都是默认值,所以是重复的。
create table #temp(str char(19))
declare @randCardID char(19)
exec proc_randCardID @randCardID output
declare @num int
set @num = 0
while(@num <10)
begin
insert #temp select @randCardID
exec proc_randCardID @randCardID output
---这一句要改
set @num = @num +1
end
select * from #temp
drop table #temp
③ mssql 存储过程中循环如何写,在循环中用什么语句跳出循环呢,在线等
给你个例子:
for loop是这样的:
createprocere pro
begin
declare aintdefault1;
label1: loop
if a<6then
selecta;
seta=a+1;
iterate label1;
endif;
leave label1;跳出循环
endloop label1;
end
while是这样的:
createprocere pro
begin
declare aintdefault4;
while a<10 do
selecta;
seta=a+1;
endwhile;
end
④ sql如何用一条语句反复执行不同参数的存储过程
sql server 代理\新建作业
⑤ sql 执行存储过程 貌似死循环
create procere dbo.Show_All
as
select *from dbo.worker
go
execute Show_All
--先创建,再执行
--你连在一起,自己调用自己,肯定是个死循环
⑥ oracle存储过程循环执行SQL语句
实现方式错了,批量移动数据应该使用Cursor,而不是像分页那样每次都查询。
每次都查询可能会导致重复数据。
正确方式应该是打开一个Cursor,循环Cursor来插入,使用计数器来控制每次COMMIT的行数:
declare
TYPE R_CURSOR IS REF CURSOR;
i number;
a1_cursor R_CURSOR;
a1_row A1%ROWTYPE;
begin
open a1_cursor FOR
select ID, NAME from A1;
i := 0;
loop
fetch a1_cursor
into a1_row;
exit when a1_cursor%notfound;
INSERT INTO A2 VALUES a1_row;
i := i + 1;
if i >= 5 then
commit;
i := 0;
end if;
end loop;
close a1_cursor;
commit;
end;
⑦ SQL 中存储过程怎么使用
一、简单的储存过程:
1、创建一个存储过程
create procere GetUsers()
begin
select * from user;
end;12345
2、调用存储过程
call GetUsers();12
3、删除存储过程
drop procere if exists GetUsers;
二、带参数的存储过程
1、MySql 支持 IN (传递给存储过程) , OUT (从存储过程传出) 和 INOUT (对存储过程传入和传出) 类型的参数 , 存储过程的代码位于 BEGIN 和 END 语句内 , 它们是一系列 SQL 语句 , 用来检索值 , 然后保存到相应的变量 (通过指定INTO关键字) ;
2、下面的存储过程接受三个参数 , 分别用于获取用户表的最小 , 平均 , 最大分数 , 每个参数必须具有指定的类型 , 这里使用十进制值(decimal(8,2)) , 关键字 OUT 指出相应的参数用来从存储过程传出
create procere GetScores(
out minScore decimal(8,2),
out avgScore decimal(8,2),
out maxScore decimal(8,2)
)
begin
select min(score) into minScore from user;
select avg(score) into avgScore from user;
select max(score) into maxScore from user;
end;1234567891011
3、调用此存储过程 , 必须指定3个变量名(所有 MySql 变量都必须以@开始) , 如下所示 :
call GetScores(@minScore, @avgScore, @maxScore);12
4、该调用并没有任何输出 , 只是把调用的结果赋给了调用时传入的变量@minScore, @avgScore, @maxScore, 然后即可调用显示该变量的值 :
select @minScore, @avgScore, @maxScore;
5、使用 IN 参数 , 输入一个用户 id , 返回该用户的名字 :
create procere GetNameByID(
in userID int,
out userName varchar(200)
)
begin
select name from user
where id = userID
into userName;
end;12345678910
6、调用存储过程 :
call GetNameByID(1, @userName);
select @userName;123
⑧ 请问在 sql server 2000中怎样执行 存储过程
查询分析器中:EXEC
存储过程
名称(无参数)
查询:
use
myDataBase(要说明在那个数据库中运行。默认是master)
select
*
from
同学录
表
带参数存储过程的:
declare
参数
execute
存储过程名称,参数