 |
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
kmkna1103
註冊時間: 2008-05-08 文章: 119 來自: 台灣
第 1 樓
|
發表於: 星期一 十月 20, 2008 11:50 am 文章主題: 請教一個null值的問題 |
|
|
SQL下寫一支自訂函數如下:
CREATE FUNCTION RET_PAYIN_MEY
(@_MEN_CODE1 CHAR(3),@_PAYIN_KD1 CHAR(2))
RETURNS FLOAT AS
BEGIN
DECLARE @_RET_MEY1 FLOAT
SELECT @_RET_MEY1=0
---
SELECT @_RET_MEY1 = SUM(MEY) FROM PAYIN WHERE MEN_CODE=@_MEN_CODE1 AND PAYIN_KD=@_PAYIN_KD1
方法1****這樣寫null值不會變0
BEGIN
IF @_RET_MEY1= NULL
SELECT @_RET_MEY1=0
END
RETURN @_RET_MEY1
END
方法2****要這樣才會變0
SELECT @_RET_MEY1= ISNULL(@_RET_MEY1,0)
RETURN @_RET_MEY1
END
我之前要清null值都用方法1,但是在寫這段程序用方法2才有辦法清null,是什麼原因呢? |
|
回頂端 |
|
 |
green
註冊時間: 2003-09-19 文章: 137
第 2 樓
|
發表於: 星期一 十月 20, 2008 2:45 pm 文章主題: |
|
|
NULL 的比較,要使用isnull函式
不能使用邏輯運算子,會得到null |
|
回頂端 |
|
 |
kmkna1103
註冊時間: 2008-05-08 文章: 119 來自: 台灣
第 3 樓
|
發表於: 星期一 十月 20, 2008 2:50 pm 文章主題: |
|
|
那代表我之前沒問題是僥倖了XD因為之前這樣下是沒發生過問題
CREATE FUNCTION RET_USE_QTY1
(@_STDATE1 CHAR( ,@_ETDATE1 CHAR( ,@_PROD_NO1 CHAR(20))
RETURNS NUMERIC(14,4) AS
BEGIN
DECLARE @_RET_QTY1 FLOAT,@_RET_QTY2 NUMERIC(14,4)
SELECT @_RET_QTY1=0,@_RET_QTY2=0
---製造需求
SELECT @_RET_QTY1=SUM(UNIT_QTY) FROM SCK,SCKL_A WHERE SCK.SCKNUM=SCKL_A.SCKNUM AND SCK_DATE>=@_STDATE1 AND SCK_DATE<=@_ETDATE1
AND PROD_NO=@_PROD_NO1
---發票出貨
SELECT @_RET_QTY2=SUM(QTY) FROM FUM,FUML WHERE FUM.FUM_NO=FUML.FUM_NO AND FUM_DATE>=@_STDATE1 AND FUM_DATE<=@_ETDATE1
AND PROD_NO=@_PROD_NO1
---
BEGIN
IF @_RET_QTY1=NULL
SELECT @_RET_QTY1=0
END
BEGIN
IF @_RET_QTY2=NULL
SELECT @_RET_QTY2=0
END
SELECT @_RET_QTY1=@_RET_QTY1+@_RET_QTY2
RETURN @_RET_QTY1
END |
|
回頂端 |
|
 |
green
註冊時間: 2003-09-19 文章: 137
第 4 樓
|
發表於: 星期一 十月 20, 2008 3:02 pm 文章主題: |
|
|
是的~~
給你測個例子
代碼: |
declare @abc char(10)
set @abc=null
print isnull(@abc,'null')
if @abc=null
print 'null'
else
print 'not null'
|
|
|
回頂端 |
|
 |
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|