多表存储过程
1. 怎么样用oracle存储过程循环清空多张的表数据
你这多张表要有某种联系。
比如说表名按照日期取名:
这样可以按照这种规律将表名作为参数传入到存储过程中去。
过程中有条件,循环语句来控制。
你试试看。
如果有问题请详细说明。
2. mysql为四个表创建储存过程或者储存函数
“另一个存储过程”的名字是sp1,没有参数,返回的结果集共3列,全部为int型,那么“存储过程”里添加一个与结果集列数相同的临时表或表变量用于接收“另一个存储过程”的结果集
如下
CREATE
PROCEDURE
sp2
AS
DECLARE
@t
table(a
int,b
int,c
int)
INSERT
INTO
@t(a,b,c)
EXEC
sp1
SELECT
*
FROM
@t
使用SQLSERVER存储过程可以很大的提高程序运行速度,简化编程维护难度,现已得到广泛应用。
创建存储过程
和数据表一样,在使用之前需要创建存储过程,它的简明语法是:
引用:
Create
PROC
存储过程名称
[参数列表(多个以“,”分隔)]
AS
SQL
语句
例:
引用:
Create
PROC
upGetUserName
@intUserId
INT,
@ostrUserName
NVARCHAR(20)
OUTPUT
--
要输出的参数
AS
BEGIN
--
将uName的值赋给
@ostrUserName
变量,即要输出的参数
Select
@ostrUserName=uName
FROM
uUser
Where
uId=@intUserId
END
其中
Create
PROC
语句(完整语句为Create
PROCEDURE)的意思就是告诉SQL
SERVER,现在需要建立一个存储过程,upGetUserName
就是存储过程名称,@intUserId
和
@ostrUserName
分别是该存储过程的两个参数,注意,在SQL
SERVER中,所有用户定义的变量都以“@”开头,OUTPUT关键字表示这个参数是用来输出的,AS之后就是存储过程内容了。只要将以上代码在“查询分析器”里执行一次,SQL
SERVER就会在当前数据库中创建一个名为“upGetUserName”的存储过程。你可以打开“企业管理器”,选择当前操作的数据库,然后在左边的树型列表中选择“存储过程”,此时就可以在右边的列表中看到你刚刚创建的存储过程了(如果没有,刷新一下即可)。
3. C#获取 sqlserver 存储过程返回多表数据
返回的时候用dataset就可以,比如你存储过程这样写
select * from A
select * from B
select * from C
select * from D
select * from D
在执行完存储过程后返回一个dataset
dataset ds = 执行存储过程
ds.tables[0]就是表A
ds.tables[1]就是表B
ds.tables[2]就是表C
剩下的依次类推.
4. 求一个sql存储过程分页。支持多表联合查询,模糊查询!
可以加个游标 使用更方便
@PageCount bigint output,--总页数
@Pages bigint output --当前页
as
if @Pages<=0 --判断页数
set @Pages=1
declare @指针定位 bigint
set @指针定位=9*(@Pages-1)--这个是每页10条
declare @hid bigint,--获取定位Id 主要是用自增值判断的
@余数 bigint--存余数 这个余数是 记录数/10 余下的数
select @PageCount=count(*) from [表] where [Id] = @Id
set @余数=@PageCount%10 --这里的@PageCount 是记录总数
if @余数>0
set @PageCount=@PageCount/10+1 --这里的@PageCount是总页数
else
set @PageCount=@PageCount/5 --这里的@PageCount是总页数
if @Pages>@PageCount --@Pages是当前页
set @Pages=@PageCount
declare mycur scroll cursor for
select [Id] from [表] where [Id] = @Id
open mycur
fetch absolute @指针定位 from mycur into @hid --@hid获取定位Id
if @hid is null
set @hid=0
SELECT TOP 10 * --这里的10 是指 页数大小
FROM 表
WHERE (Id NOT IN --------在where后面 可以加条件 如where [列1]=2 and (Id NOT IN-----
(SELECT TOP (@hid) Id
FROM 表
ORDER BY Id))
ORDER BY Id
--上面的是我根据下面的 自己改的 我也不确定速度快否 也请高手看看 不过挺好用--
SELECT TOP 页大小 *
FROM TestTable
WHERE (ID NOT IN
(SELECT TOP (页大小*(页数-1)) id
FROM 表
ORDER BY id))
ORDER BY ID
这是我自己整理的 你仔细看看 很好用的
5. sql server如何用存储过程把多个表的数据添加到一张表中,表字段都很相近,我用临时表实现了操作,但是
楼主
可以把需求说清楚点
表名是固定的吗
要传什么变量
然后字段是哪些
如果表名不变
字段类似的话
我帮你写个模型
create
proc
usp_tableall
as
insert
into
表名
--这里表要存在
存储你处理的数据
否则就用select
*
into
from
tb
的格式
select
col1,col2
from
a
union
all
select
col1,col2
from
b
……
go
exec
usp_tableall