⑴ 怎麼寫遞歸更新的存儲過程
兩個表,OrderTrade(tid PK)和OrderDetails(oid pk),關系為一對多,OrderTrade中包含多個OrderDetails
兩個表都包含欄位Status、Timeout、Modified
表OrderDetails中包含標記欄位Type
現在我想根據oid更新OrderDetails中的Status和OrderTrade中的Status
根據OrderDetails.tid獲得OrderTrade下所有的OrderDetails
如果返回的記錄中沒有任何一條的Type=='BOOK',
則更新所有OrderDetails的Status為'WAIT'和OrderTrade的Status為'Confirm',
如果存在Type=='BOOK',則更新當前OrderDetails;
if OrderDetails.Type=='BOOK'
then OrderDetails.Status = 'MEAUSE',Timeout=DateAdd(dd,7,getdate()),Modified=getdate();
else
OrderDetails.Status = 'WAIT',Timeout=DateAdd(dd,7,getdate()),Modified=getdate();
更新OrderDetails後是否更新OrderTrade
查找當前更新是否為最後一條OrderDetails(根據Status的值是否為'WAIT'/'MEAUSE'),如果是則更新OrderTrade.Status="Confirm"以及Timeout、Modified,如果還存在其他未更新的OrderDetails,則OrderTrade.Status不做任何改動
⑵ sql更新存儲過程怎麼寫
createproctt
@tablevarchar(5),--要更新的表名
@columnvarchar(50)--要更新的欄位名
@newvalueint--更新後的值
@nidint--要更新行的標識
as
declare@sqlnvarchar(50),@parmnvarchar(50)
set@sql='update'+@table+'set'+@column+'=@newwhereid=@id'
set@parm='@newint,@idint'
execsp_executesql@sql,@parm,@new=@newvalue,@id=@nid
⑶ 軟體測試中,版本和迭代有什麼區別 跪求高手指點
軟體測試中,版本和迭代區別為:階段范圍不同、測試不同、關注重心不同。
一、階段范圍不同
1、版本:版本的階段范圍較大,是開發時期的最後階段做出來的軟體版本。
2、迭代:迭代的階段范圍較小,是一般以周(或2周),長的一個月左右為一個迭代版本。
二、測試不同
1、版本:版本由於接近成品,所以,要經過系統測試。
2、迭代:迭代由於敏捷開發要求每個最小階段,合入的代碼都要保證當前編譯的版本可用,所以要經過單元測試。
三、關注重心不同
1、版本:版本的關注重心為整體的運行效果和問題反饋,包括新開發內容和沒有改變的內容。
2、迭代:迭代的關注重心為關注修改和新開發內容。
⑷ 怎樣新增或更新存儲過程
新增的話 create procere ... 後邊寫內容就可以了 更新的話 alter procere ... 更新的內容 如果oracle的話 create or replace procere 。。。 直接就更新了,如果不存在,就會自動創建
這不可能,更新編譯package時,需要在這整個包上申請鎖,如果是正在運行的package,你可能申請不到這個鎖。如果這是一個被頻繁調用的package,可能你就完不成這個任務。為了保證一致性,oracle不允許你這么做
⑸ 如何做產品版本迭代管理
一、制定迭代計劃
1. 為什麼要制定迭代計劃
有以下幾個優勢:
減少錯誤成本
提高進度把控
限定范圍
管理客戶期望
維持系統穩定
2. 如何制定迭代計劃
確定工作范圍
預估工作時間
制定迭代計劃
二、管理迭代計劃
1. 開發進度管理
提高可控性
降低延期風險
確保開發對需求的正確理解
及時排查進度障礙
選擇更優的實現方式
引起團隊重視
保障項目資源
多請下午茶
2. 控制任務變更
減少需求調整
控制新增任務
3. 發版管理
用戶通告
規范更新文檔
制定發版標准
資源保障
三、最後
每一次迭代就是一次小的項目管理,推動項目的前進需要依賴產品經理豐富的溝通技巧以及極強的執行能力。
⑹ oracle 更新的存儲過程怎麼寫
UPDATETESTOPT1
SETDEVICE_NO=
(SELECTRN
FROM(SELECTNAME,ROWNUMRN
FROM(SELECTDISTINCTNAMEFROMTESTOP))T2
WHERET1.NAME=T2.NAME);
COMMIT;
⑺ 進銷存系統如何升級和迭代
升級和迭代的目的是為了讓進銷存系統更加完善,修補之前版本的漏洞,增加新功能的需求,讓操作更加流暢,讓使用更加便利。
升級和迭代應避免的7個問題:
1.產品做完美才上線
2.什麼需求都接
3.需求沒有排好優先順序
4.需求沒有比較性價比
5.與技術的協作不佳
6.與需求方的溝通不力
7.重復犯錯
避免了這7點,相信進銷存軟體的升級與迭代會越來越好
⑻ 存儲過程的優缺點
存儲過程的優缺點:
存儲過程優點:
1.由於應用程序隨著時間推移會不斷更改,增刪功能,T-SQL過程代碼會變得更復雜,StoredProcere為封裝此代碼提供了一個替換位置。
2.執行計劃(存儲過程在首次運行時將被編譯,這將產生一個執行計劃--
實際上是
Microsoft
SQL
Server為在存儲過程中獲取由
T-SQL
指定的結果而必須採取的步驟的記錄。)緩存改善性能。
但sql
server新版本,執行計劃已針對所有
T-SQL 批處理進行了緩存,而不管它們是否在存儲過程中,所以沒比較優勢了。
3.存儲過程可以用於降低網路流量,存儲過程代碼直接存儲於資料庫中,所以不會產生大量T-sql語句的代碼流量。
4.使用存儲過程使您能夠增強對執行計劃的重復使用,由此可以通過使用遠程過程調用
(RPC)
處理伺服器上的存儲過程而提高性能。RPC
封裝參數和調用伺服器端過程的方式使引擎能夠輕松地找到匹配的執行計劃,並只需插入更新的參數值。
5.可維護性高,更新存儲過程通常比更改、測試以及重新部署程序集需要較少的時間和精力。
6.代碼精簡一致,一個存儲過程可以用於應用程序代碼的不同位置。
7.更好的版本控制,通過使用
Microsoft
Visual
SourceSafe
或某個其他源代碼控制工具,您可以輕松地恢復到或引用舊版本的存儲過程。
8.增強安全性:
a、通過向用戶授予對存儲過程(而不是基於表)的訪問許可權,它們可以提供對特定數據的訪問;
b、提高代碼安全,防止
SQL注入(但未徹底解決,例如,將數據操作語言--DML,附加到輸入參數);
c、SqlParameter
類指定存儲過程參數的數據類型,作為深層次防禦性策略的一部分,可以驗證用戶提供的值類型(但也不是萬無一失,還是應該傳遞至資料庫前得到附加驗證)。
存儲過程缺點:
1.如果更改范圍大到需要對輸入存儲過程的參數進行更改,或者要更改由其返回的數據,則您仍需要更新程序集中的代碼以添加參數、更新
GetValue()
調用,等等,這時候估計比較繁瑣了。
2.可移植性差
由於存儲過程將應用程序綁定到
SQL
Server,因此使用存儲過程封裝業務邏輯將限制應用程序的可移植性。如果應用程序的可移植性在您的環境中非常重要,則將業務邏輯封裝在不特定於
RDBMS
的中間層中可能是一個更佳的選擇。
3.
大量採用存儲過程進行業務邏輯的開發致命的缺點是很多存儲過程不支持面向對象的設計,無法採用面向對象的方式將業務邏輯進行封裝,從而無法形成通用的可支持復用的業務邏輯框架。
4.代碼可讀性差,相當難維護.
⑼ 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