當前位置:首頁 » 存儲配置 » 存儲過程式控制制下的更新

存儲過程式控制制下的更新

發布時間: 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

熱點內容
怎麼設置qq郵箱獨立密碼 發布:2025-01-08 11:58:14 瀏覽:381
公司建設網站怎麼搭建伺服器 發布:2025-01-08 11:45:43 瀏覽:303
dell存儲分類 發布:2025-01-08 11:40:02 瀏覽:713
遞歸sql語句 發布:2025-01-08 11:31:50 瀏覽:709
laravel緩存文件 發布:2025-01-08 11:31:46 瀏覽:632
怎麼看macbook配置信息 發布:2025-01-08 11:27:40 瀏覽:62
python帶路徑的文件 發布:2025-01-08 11:23:22 瀏覽:714
如何把手機內容存儲 發布:2025-01-08 11:09:34 瀏覽:246
三星聯系人存儲程序停止 發布:2025-01-08 11:09:26 瀏覽:425
qq編程語言 發布:2025-01-08 11:04:26 瀏覽:40