sql語句,儲存過程,智慧型更新,SQL 乙個儲存過程中 執行兩個更新操作 怎麼寫

2022-02-04 21:25:14 字數 3558 閱讀 9909

1樓:

簡單啊,用if判定一下就可以了啊,在update之前先判定name是否為空:

if isnull(@name,'')!=''

update 表 set username = @username 。。。。。。 where id=@id

同等道理,age也一樣的做就可以了。當然,判定條件並列的話,你可以一起判定

2樓:

如果想使用多條語句的話, 有兩種方法:

(1)使用if語句: 分別判斷@name和@age是否為空, 然後根據不同的情況分別使用不同的update語句進行資料修改(兩個判斷條件組合的話, 應該有4種不同結果). 比如其中一種為:

if(@name="" and @age!="") /*若@name為空,而@age非空, 則name不變,age更新*/

(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

3樓:節子不哭

額,我覺得你這個就是乙個簡單的判斷啊,@name為空不執行update語句,不為空執行update語句,加上乙個if語句就可以了麼

oracle 寫法

if @name is not null

update 表 set username = @username 。。。。。。 where id=@id

end if;

4樓:匿名使用者

update tbtest set username = @username, name = case when @name='' then name else @name end where id=@id

5樓:不知光年

不知道是不是這個意思:

update 表 set username=@username,name=case when @name<>'' then @name else name end,age=case when @age<>'' then @age else age end where id=@id

sql 乙個儲存過程中 執行兩個更新操作 怎麼寫 10

6樓:

if (exists (select * from sys.objects where name = 'proc_get_student'))

drop proc proc_get_studentgocreate proc proc_get_studentasupdate table1 set field1=updatevalue1 where id=youid1;

update table2 set field1=updatevalue2 where id=youid2;

如何在儲存過程中實現插入更新資料

sql儲存過程中怎麼寫迴圈

7樓:小丁創業

方法和詳細的操作步驟如下:

1、第一步,編寫儲存過程的整體結構,定義變數,見下圖,轉到下面的步驟。

2、第二步,完成上述步驟後,定義游標,具體的**見下圖,轉到下面的步驟。

3、第三步,完成上述步驟後,編寫乙個for迴圈,游標for迴圈開始,然後臨時返回變數名,從任意乙個開始,使用變數名.列名,最後迴圈的游標結束,見下圖,轉到下面的步驟。

4、第四步,完成上述步驟後,執行測試,請單擊「 dbms output」選項卡進行檢查,見下圖。這樣,就解決了這個問題了。

8樓:

declare @i int

set @i = 0

while @i < 100

begin

update table set column = @i where id_column = @i

set @i = @i + 1

end也可以用游標,當然做游標的表(或查詢) 不能過於複雜,如果很複雜 可以先將查詢結果存入臨時表,在用臨時表上游標

oracle 儲存過程迴圈執行update語句

9樓:匿名使用者

找出主鍵,用游標可以完成!但特殊處理是哈,說清楚我寫個例子出來

sql更新儲存過程怎麼寫 5

10樓:匿名使用者

兄弟可以先到這個**學習下基礎知識(www.w3school.com.cn/ )

因為儲存過程也是一些語句的集合;這裡我再上傳乙個學習檔案給你!

11樓:匿名使用者

你用儲存過程構造乙個更新的update就好了這個儲存過程 有幾個引數 ,

第一 表名 第二 更新的欄位名 第三 更新的條件然後拼接成sql語句

直接exec @sql 就好了

12樓:翔阿狗

應該是if語句判斷然後寫更新語句,你說得太模糊沒法寫。

13樓:匿名使用者

照你這樣說,我覺的是乙個選擇更新語句,選擇更新那個字段,然後更新該欄位,把不需要更新得字段的原值不改變。

14樓:天使的眼淨

create proc tt

@table varchar(5),--要更新的表名@column varchar(50)--要更新的欄位名@newvalue  int --更新後的值@nid int --要更新行的標識

asdeclare @sql nvarchar(50),@parm nvarchar(50)

set @sql ='update '+@table +' set '+@column +'=@new where id =@id'

set @parm='@new int,@id int'

exec sp_executesql @sql,@parm,@new=@newvalue,@id=@nid

mysql儲存過程引數能放到sql語句最後面嗎

不可以delimeter create procedure pro latest in num int begin set n num prepare sqlstring from select from product order by timestamp desc limit execute s...

判斷條件的sql語句怎麼寫,判斷條件的SQL 語句怎麼寫?

select a.userid,a.username,case when b.depname is null 不存在 else 存在 end as 部門是否存在 from a left outer join b on a.depid b.depid select a.userid,a.usernam...

用sql語句建表和設定約束,C 如何使用SQL語句來建表,新增字段

val first numbers 0 讀取第乙個元素 create table 選課及成績表 課程號 varchar 20 check 課程號 like a z a z 0 9 0 9 0 9 0 9 學號 varchar 20 constraint pk pr primary key 課程號,學...