当前位置:首页 » 存储配置 » 更新历史数据的存储过程

更新历史数据的存储过程

发布时间: 2022-12-27 12:59:56

A. sql数据库怎么进行多表级联更新,求个存储过程

createprocaa
@IDint
as
begin
update表1setflag=1where表1ID=@ID

update表2setflag=1from表1a,表2bwherea.表1ID.=b.表1IDanda.表1ID=@ID

update表3setflag=1from表1a,表3cwherea表1ID.=c.表1IDanda.表1ID=@ID

update表4setflag=1from表1a,表3b,表4cwherea表1ID.=b.表1IDandc.表3ID=b.表3IDanda.表1ID=@ID

update表5setflag=1from表1a,表3b,表5cwherea表1ID.=b.表1IDandc.表3ID=b.表3IDanda.表1ID=@ID

update表6setflag=1from表1a,表3b,表6cwherea表1ID.=b.表1IDandc.表3ID=b.表3IDanda.表1ID=@ID
end
---执行---
--execaa1

B. Oracle中的存储过程如何添加更新数据

添加更新数据跟一般的sql一样的写法啊,唯一差别是变量、传参的写法,比如
select
count(1)
into
v_count
from
table
a
where
a.clct_day
=
p_clct_day;
这里v_count就是定义的一个变量,p_clct_day就是过程传入的时间参数

C. 数据库中的存储过程到底是什么能不能举个详细的例子

存储过程,实际就是一段写在数据库中的代码。。
由于此段数据库操作代码由服务器完成,而客户端只是进行简单的参数提交,所以,可以有效的利用服务器的强劲而减小对客户机的负合。
如:你想插入一条数据到数据库。
虽然你的要求是,先检查表里面是否己存在该项。
如果不存在就Insert,如果存在就UPDATE。
这个时候,你就可以把这个判断用存储过程来写。
你的程序只要提示你想要保存到数据库里面的东西即可。
下面就是一个简单的存储过程。
CREATE
PROCEDURE
[insert_A_Employees]
(@fWorkNo
[int],
@fWorkName
[char](10),
@fDeptName
[varchar](20),
@fGroupName
[varchar](20),
@fRecordDate
[datetime])
AS
declare
@iCount
int
select
@iCount
=
count(*)
from
A_EMPLOYEES
where
@fWorkNo
=
fWORKNO
--统计该工号在数据库的数量赋值给
@iCount
if
@iCount
=
0
--如果数据库中不存在该工号
begin
INSERT
INTO
[CLKQ].[dbo].[A_Employees]
--则插入数据
(
[fWorkNo],
[fWorkName],
[fDeptName],
[fGroupName],
[fRecordDate])
VALUES
(
@fWorkNo,
@fWorkName,
@fDeptName,
@fGroupName,
@fRecordDate)
return
1
--返回一个标识
end
else
begin
--否则则更新数据
update
[CLKQ].[dbo].[A_Employees]
set
[fWorkName]=@fWorkName,
[fDeptName]=@fDeptName,
[fGroupName]=@fGroupName,
[fRecordDate]=@fRecordDate
where
[fWorkNo]=@fWorkNo
return
0
--返回一个标识
end
GO
此时你只要在客户端程序提供:
@fWorkNo
,
@fWorkName
,
@fDeptName
,
@fGroupName
,
@fRecordDate
这几个值就行了。。
其它处理过程就由服务器方处理了。
以上是以
SQL
数据库为例。。。
ACCESS
等数据库没有此功能。

D. 如何在存储过程中实现插入更新数据

--先在数据库中创建test表,表中有列名为name,类型为varchar(50)
然后先执行
create procere proc_insert
@name varchar(50)
as
begin
insert into test values(@name)--插入数据
end
go
create procere proc_update
@newname varchar(50),@oldname varchar(50)
as
begin
update test set name=@newname where name=@oldname--更新数据
end
go
--其中proc_insert为存储过程名,可自定义 procere可使用简写proc
上面执行完成后调用存储过程
exec proc_insert '晓华'--将"晓华"添加到test表中
exec proc_update '小明','晓华' --将表中'晓华' 改为'小明',必须与存储过程变量顺序相同
exec proc_update @oldname='小明',@newname='晓华'--与存储过程变量顺序可以不同

drop procere proc_insert 删除存储过程proc_insert

E. sql存储过程更新数据

DROPPROCEDUREexp3
GO
CREATEPROCEDUREexp3
@snchar(10)='2015200011',
@sjhchar(11)='12018060001',
@kgcjint,
@zgcjint,
@cjint
AS
UPDATEcyjgSETkgtcj=@kgcj,zgtcj=@zgcj,zcj=@cjWHEREsno=@snANDsjbh=@sjh;
go
EXECUTEexp3@kgcj=67,@zgcj=26,@cj=93
go

F. sql更新数据存储过程怎么写

create procere update_table ( @c_tbname varchar(128), -- 要更新的表名
@c_upcolname varchar(1000), -- 要更新的字段列表,以豆号隔开
@c_updata varchar(1000), -- 要更新的数据列表,以豆号隔开,要与相应的列一一对应
@c_id varchar(100) -- 要更新的关键字,没有关键字的不能更新
)
as
begin
declare @c_sql varchar(max)
declare @i_bcol int
declare @i_ecol int
declare @i_bdata int
declare @i_edata int
if @c_id is null or @c_id = ''
return
set @i_bcol= 1
set @i_bdata= 1
set @c_sql = ' update ' + @c_tbname + ' set '
set @i_ecol = charindex(',' , @c_upcolname , @i_bcol )
while @i_ecol > 0
begin
set @c_sql = @c_sql + substring( @c_upcolname,@i_bcol,@i_ecol - 1 ) + ' = '
set @i_edata= charindex(',' , @c_updata, @i_bdata)
set @c_sql = @c_sql + '''' + substring( @c_updata,@i_bdata,@i_edata- 1 ) + ''' ,'
set @i_bcol = @i_ecol + 1
set @i_ecol = charindex(',' , @c_upcolname , @i_bcol )
end

set @c_sql = @c_sql + substring( @c_upcolname,@i_bcol,len@c_upcolname) - 1 ) + ' = '
set @c_sql = @c_sql + '''' + substring( @c_updata,@i_bdata,len(@c_updata)- 1 ) + ''' '
set @c_sql = @c_sql + ' where id = ''' + @c_id + ''' '
exec ( @c_sql )
end

G. Oracle存储过程,更新大量数据,如何循环分批次提交

可通过以下方法:

以100条数据为例,如果海量数据可参考。

如test表中有如下数据:

declare
iint;--定义变量
v_countint;--定义变量
v_loopint;--定义变量
begin
selectcount(*)intov_countfromtest;--计算表内数据总数
selectceil(v_count/10)intov_loopfromal;--计算需要循环次数
i:=1;--为i赋值
whilei<=v_looploop--循环退出条件
updatetestsetbegintime=<=10;--执行更新
commit;--提交
i:=i+1;--i依次加1
endloop;--结束循环
end;

H. oracle 存储过程插入或更新数据

create or replace trigger ggxx_s_update
BEFORE update on up_org_station
for each row
declare
-- local variables here
PRAGMA AUTONOMOUS_TRANSACTION;

BEGIN
update up_org_station_tmp
SET 字段1= :NEW.字段1,
--********
-- 剩下的字段你自己写 up_org_station_tmp 表结构与up_org_station一致
WHERE up_org_station_tmp.id = :OLD.id
COMMIT;
GGXX; --存储过程中 up_org_station 改为 up_org_station_tmp
COMMIT;
end ggxx_s_update;

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:752
制作脚本网站 发布:2025-10-20 08:17:34 浏览:1013
python中的init方法 发布:2025-10-20 08:17:33 浏览:720
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:880
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:776
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1129
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:353
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:230
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:912
python股票数据获取 发布:2025-10-20 07:39:44 浏览:878