当前位置:首页 » 存储配置 » 存储过程控制下的更新

存储过程控制下的更新

发布时间: 2022-08-12 22:38:08

① 如何:分配存储过程以执行更新、插入和删除(O/R 设计器)

该运行时创建默认的 Insert、Update 和 Delete 命令,这些命令基于表的架构(列和主键信息)。
当不需要默认行为时,可以通过分配特定的存储过程,以执行操作表中数据所必需的插入、更新和删除来配置更新行为。在不生成默认行为时(例如,实体类映射到视图时),也可以这样做。
最后,在数据库要求通过存储过程访问表时,您可以重写默认的更新行为。

sql存储过程更新数据

表HC_RKDMX的相关字段
YJSL OrderNO RKSL
先按OrderNO降序,得到
OrderNO RKSL YJSL
---4------5---NULL
---3------2---NULL
---2------4---NULL
---1------6---NULL
然后set @SL = 11
set YJSL =@SL -RKSL,减完为止
得到
OrderNO RKSL YJSL
---4------5----6
---3------2----4
---2------4----0
---1------6---NULL
再把最后减到为0的数变为11-(YJSL1+YJSL2)=1?
然后把剩下的不够减的NULL变0?
而且还要把得到的YJSL更新到原来的ROWID列上?得到一个6 4 1 0的列按物理地址插入?就是说倒序插入?
OrderNO RKSL YJSL
---4------5----0
---3------2----1
---2------4----4
---1------6----6

如果set @SL = 13的话
OrderNO RKSL YJSL
---4------5----8
---3------2----6
---2------4----2
---1------6---(-4) 这里(-4)变为13-(5+2+4)=2?
如果@SL不刚好的排序后的全N个RKSL的和的话怎么处理,负数和剩余的NULL全部为0?
看不懂。。是不是你算错了
应该是由@SL减去表里的RKSL等于YJSL(安OrderNO一次序小到大的顺序的计算,直到计算完为止)
OrderNO RKSL YJSL
---1------6----5
---2------4----1
---3------2----(-1)
---4------5---NULL
不知道是不是你算错了~想来想去不知道你怎么得到YJSL 6 4 1 0的唯一的可能是先降序 11-5=6 -2=4 -4=0那是6 4 0 NULL啊
囧。、。。自己本来还以为降序的
后面想来想去晕了~

其实存储过程的话很好写的,但是没弄清楚你要得到什么,怎么得到

③ sql中创建关于更新的存储过程

关于delphi调用存储过程,用sql
server自带的“创建存储过程向导”给表login建立一个更新存储过程。
悬赏分:100
|
离问题结束还有
12

18
小时
|
提问者:风风我依
|
检举
存储过程代码如下:已知表login有passname和password两个字段。
create
procere
[update_login_1]
(@passname_1
[varchar],
@passname_2
[varchar](50),
@password_3
[varchar](50))
as
update
[wqzx].[dbo].[login]
set
[passname]
=
@passname_2,
[password]
=
@password_3
where
(
[passname]
=
@passname_1)
go
-------------------------------------------------------------------------------------
在delp调用该存储过程,要求只该改字段中的password,即建一个文本框将里面内容替换一个记录中的password,而保持passname不变,简单讲就是修改一个用户名的密码。怎么写代码?问题补充:
"强唐华"我试过这样写存储过程了,没用的,如果可以,那在delphi中怎么写代码调用这个存储过程?
强调下:这是sql自带建立的存储过程,就是由“创建存储过程向导”生成,我觉得不会错的,问题是怎么在delphi中调用该存储过程,代码呢?
我建立了一个插入的存储过程,代码如下:
with
storedproc1
do
begin
parambyname('@passname_1').asstring:=edit1.text;
parambyname('@password_2').asstring:=edit2.text;
execproc;
if
params[0].asinteger=0
then
messagedlg('添加新用户名成功!',mtinformation,[mbok],0)
else
messagedlg('添加用户失败!',mterror,[mbok],0);
end;
这段代码是可以成功插入一个记录的。现在是想修改某个记录。
回答
共1条
create
procere
[dbo].[update_login]
(@name
varchar(50),
@password
[varchar](50))
as
update
useres
set
password=@password
where
name=
@name
这么简单的存储过程,都不会用?
sqlconnection
conn
=
new
sqlconnection("data
source=tq-pc;initial
catalog=tq;user
id=sa;password=123");
sqlcommand
cmd
=
new
sqlcommand("update_login",
conn);
cmd.commandtype
=
commandtype.storedprocere;
cmd.parameters.addwithvalue("@name",
textbox3.text.trim());
cmd.parameters.addwithvalue("@password",
textbox4.text.trim());
conn.open();
int
i
=
cmd.executenonquery();
if
(i
>
0)
response.write("密码修改成功!");
else
response.write("密码修改失败!");

④ SQL 一个存储过程中 执行两个更新操作 怎么写

if (exists (select * from sys.objects where name = 'proc_get_student'))
drop proc proc_get_student
go
create proc proc_get_student
as
update table1 set field1=updatevalue1 where id=youID1;
update table2 set field1=updatevalue2 where id=youID2;

⑤ 如何更新数据,使用存储过程实现

CREATE PROCEDURE
存储过程名
@num int,
@name varchar(50),
@price int,
@ptime datetime
as
Update 表
set
name= @name,
num=@num,
类推.....
where name=@name
EXECUTE @num=xxx,
@name =xxx,
@price=xxx,
@ptime =xxx

⑥ sql语句,存储过程,智能更新

如果想使用多条语句的话, 有两种方法:
(1)使用if语句: 分别判断@name和@age是否为空, 然后根据不同的情况分别使用不同的update语句进行数据修改(两个判断条件组合的话, 应该有4种不同结果). 比如其中一种为:

if(@name="" and @age!="") /*若@name为空,而@age非空, 则name不变,age更新*/
{update...set username=@username, age=@age where id=@id}
(2)使用多条update语句,分别对不同的字段进行修改. 此时就需要把更新条件都放到where语句中. 因为需要更新的3个字段的"完整判定条件"都不同, 所以需要3条update语句:

update...set username=@username where id=@id
update...set name=@name where id=@id and @name!=""
update...set age=@age where id=@id and @age!=""
从上面的方法也可以看出, where子句对于条件的使用, 仅限于从表中筛选行. 筛选出来后, set子句对每一行的处理方式都是一样的. 所以, 如果想只用一条update语句完成整个功能, 就必须在where中一次性把所有"可能要修改"的行都筛选出来.

因为这里还要求对不同的行进行不同的处理, 所以, 只能把条件控制加到set子句中.
可以使用case函数:
update...set

username=@username,

name=(case @name when "" then name else @name end)
age=(case @age when "" then age else @age end)
where id=@id

热点内容
安卓相册哪个好看 发布:2025-01-09 05:16:01 浏览:979
java分析数据 发布:2025-01-09 05:16:00 浏览:849
视频md5加密 发布:2025-01-09 05:08:59 浏览:923
xp系统文件夹加密 发布:2025-01-09 04:52:38 浏览:171
外部调用shell脚本内函数 发布:2025-01-09 04:49:14 浏览:254
java数据库搜索 发布:2025-01-09 04:48:30 浏览:618
pythoninspect 发布:2025-01-09 04:42:12 浏览:411
数据库系统概论第 发布:2025-01-09 04:29:34 浏览:461
一元夺宝服务器怎么样 发布:2025-01-09 04:24:58 浏览:520
idc脚本编写 发布:2025-01-09 04:14:40 浏览:372