日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

With在sql server 2005中的用法

發布時間:2025/3/21 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 With在sql server 2005中的用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

with在MSDN中的講解,可以參考鏈接

SQL 1 ------------------------------------
2 ------創建表值變量類型--------------
3 ------------------------------------
4 CREATE TYPE Ty_NewAreaGoods AS TABLE(
5 AreaID INT NOT NULL,
6 GoodsID INT NOT NULL
7 )
8 -------------------------------------
9 ----創鍵返回今天報價的數據-----------
10 ----根據有報價的地區獲取參-----------
11 ----考報價地區以及交易品id-----------
12 -------------------------------------
13 CREATE PROC [dbo].[usp_GetTodayPrices]
14 @dt Ty_NewAreaGoods READONLY
15 AS
16 BEGIN
17 WITH temp_1 AS(
18 SELECT aa.AreaId,tt.GoodsID AS GoodsID FROM MD_Area aa,@dt tt WHERE aa.QuotationType=tt.AreaID
19 AND EXISTS(SELECT 0 FROM MD_Goods gg WHERE gg.TypeId = aa.GoodsTypeId AND gg.ID=tt.GoodsID)
20 UNION ALL
21 SELECT AreaID,GoodsID AS GoodsID FROM @dt
22 )
23 SELECT pp.* FROM MD_Prices pp,temp_1 tt
24 WHERE pp.AreaID = tt.AreaId AND pp.GoodsId= tt.GoodsID
25 AND CONVERT(VARCHAR(10),PriceDate,120)=CONVERT(VARCHAR(10),GETDATE(),120)
26 END
27 --------------------------------------
28 ----調用存儲過程----------------------
29 ----傳入地區ID為1,2;交易品id=34-------
30 --------------------------------------
31 DECLARE @dt Ty_NewAreaGoods;
32 INSERT INTO @dt VALUES(1,34);
33 INSERT INTO @dt VALUES(2,34);
34 EXEC [usp_GetTodayPrices] @dt
35 --------------------------------------

?表值變量,with,update結合運用:

Update Code 1 CREATE PROC [dbo].[usp_UpdatePrice]
2 @dt Ty_NewAreaGoods READONLY
3 AS
4 BEGIN
5 SET NOCOUNT ON;
6 DECLARE @ERRORSUM SMALLINT ;
7 BEGIN TRAN;
8 SET @ERRORSUM=-1;
9 WITH temp_1 AS(
10 SELECT aa.AreaId,tt.GoodsID AS GoodsID FROM MD_Area aa,@dt tt WHERE aa.QuotationType=tt.AreaID
11 AND EXISTS(SELECT 0 FROM MD_Goods gg WHERE gg.TypeId = aa.GoodsTypeId AND gg.ID=tt.GoodsID)
12 UNION ALL
13 SELECT AreaID,GoodsID AS GoodsID FROM @dt
14 )
15 UPDATE pp SET pp.GuidePrice= 1001 FROM MD_Prices pp , temp_1 tt
16 WHERE pp.AreaID = tt.AreaId AND pp.GoodsId = tt.GoodsID
17 IF(@@ERROR<>0) GOTO ERROR_Hander;
18 COMMIT TRAN;
19 RETURN 0;
20 ERROR_Hander:
21 ROLLBACK TRAN;
22 RETURN @ERRORSUM;
23 END
24
25
26 DECLARE @dt Ty_NewAreaGoods;
27 INSERT INTO @dt VALUES(2,34);
28 EXEC [usp_UpdatePrice] @dt

?

總結

以上是生活随笔為你收集整理的With在sql server 2005中的用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。