台灣最大程式設計社群網站
線上人數
1465
 
會員總數:244789
討論主題:188837
歡迎您免費加入會員
討論區列表 >> MS SQL >> 自定函式運算規則
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
自定函式運算規則
價值 : 10 QP  點閱數:844 回應數:13

樓主

Wind
門外漢
0 89
1172 146
發送站內信

各位大大,想請問二個問題:
一、在(預設值或繫結)中,可以使用自定的函數並帶入欄位值嗎?
例如:getIDcount([id]) 會帶入id欄位的值,並回傳該筆資料id的總數。

二、計算資料行規格 是不能做select之類的條件運算,而只能用於該資料表的欄位?




搜尋相關Tags的文章: [ 純量函式 ] ,
本篇文章發表於2016-05-17 23:36
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
不錯的參考

pilipala
檢舉此回應
default 和 computed column 都可以搭配使用者自訂函數來完成需求
本篇文章回覆於2016-05-18 08:46
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

Wind
檢舉此回應
請問可以給一個例子嗎?

例:getIDcount([id])

那這個應該怎麼寫?
本篇文章回覆於2016-05-18 10:21
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
https://msdn.microsoft.com/en-us/library/ms191320.aspx?f=255&MSPPError=-2147217396
本篇文章回覆於2016-05-18 19:58
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

Wind
檢舉此回應
回三樓,這個例子,不能用在 預設值或繫結 呀
本篇文章回覆於2016-05-18 21:24
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
那我建議你用 procedure

create procedure proc_取總數
(@id int=100)
as
select sum(數量) from tb where id=@id
本篇文章回覆於2016-05-19 01:40
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
如果 沒給ID 就指定一個ID 剛漏說了


if isnull(@id,'')=''
begin
set @id=100
end
本篇文章回覆於2016-05-19 01:43
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
作者回應

Wind
檢舉此回應
所以用預存程序,可以在
預設值或繫結 的欄位中 輸入 proc_取總數([欄位名稱]) 來當作某欄位的預設值?
本篇文章回覆於2016-05-19 11:39
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
預設值或繫結 您是用在哪裡? 舉個實例 不然很難了解你的需求
是用在.net 的控件上嗎??
本篇文章回覆於2016-05-19 19:06
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
作者回應

Wind
檢舉此回應
在設計資料表的時候,不是有一個地方,可以設定該欄位的預設值嗎?
我希望在那個地方,設定一個函式,而那個函式能傳入某欄位。

例如,通常我們會開一個欄位,叫做建立日期,在 預設值或繫結 的地方,我們會輸入 getdate(),讓這個欄位
自動產生當下的日期。

而我希望的函式,是 getdata([欄位名])
本篇文章回覆於2016-05-19 21:53
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
作者回應

Wind
檢舉此回應
很類似這樣
https://dotblogs.com.tw/peterchang770820/2014/10/12/146906
本篇文章回覆於2016-05-19 21:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
不錯的參考

真的有點難
檢舉此回應
那就用trigger
CREATE TRIGGER [dbo].[trigger_INSERT] on tb AFTER INSERT
AS
BEGIN
--SELECT * FROM inserted
-- 你要做的
end
本篇文章回覆於2016-05-20 03:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
最有價值解答

pilipala
檢舉此回應
default 和 computed column 搭配使用者自訂函數的情況下,
default 不能把欄位當成參數傳進自訂函數,computed column 可以

擷取 MSDN 關於 default 的說明
DEFAULT 定義中的 constant_expression 無法參考資料表中的另一個資料行,也無法參考其他資料表、檢視表或預存程序。

CREATE TABEL
https://msdn.microsoft.com/zh-tw/library/ms174979(v=sql.120).aspx


本篇文章回覆於2016-05-20 08:33
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
作者回應

Wind
檢舉此回應
謝謝各位,我剛才測式後,我是使用 計算資料行規格(computed column )
搭配自定函數,就可以達到效果了。

使用方式,就是在公式中 輸入 --> 自定的純量函式(欄位)

謝謝各位
本篇文章回覆於2016-05-20 08:44
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.