線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1657
推到 Plurk!
推到 Facebook!

關於function問題

答題得分者是:cxg
figo
初階會員


發表:47
回覆:70
積分:28
註冊:2004-12-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-02 14:50:21 IP:202.175.xxx.xxx 未訂閱
  
 function y(pRoute,pSize, pVar: string): string;
    begin
         result := 'sum(case when substring(sm.sorder_id,1,1)='''   pRoute  
                   ''' and substring(cnt.Csize,1,2)='''   pSize  
                   ''' then 1 else 0 end) as '   pVar
    end; 
case when substring=???是什麼意思 then 1 else 0 end) as =??是什麼意思 我不是太了解..請各位高手給我一些指點..謝謝
cxg
中階會員


發表:116
回覆:192
積分:76
註冊:2004-02-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-02 15:21:31 IP:222.35.xxx.xxx 未訂閱
这时返回一个SQL语句,你可以查一下SQL中的CASE语句的语法。 CASE input_expression WHEN when_expression THEN result_expression [ ...n ] [ ELSE else_result_expression END
cxg
中階會員


發表:116
回覆:192
積分:76
註冊:2004-02-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-02 15:26:11 IP:222.35.xxx.xxx 未訂閱
补充一下: substring(sm.sorder_id,1,1)是从sm.sorder_id的第一位开始取一个字符。
figo
初階會員


發表:47
回覆:70
積分:28
註冊:2004-12-18

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-06-02 15:59:40 IP:202.175.xxx.xxx 未訂閱
多謝cxg的回答.. 我還有個問就是.. sum(...)as pvar... 是不是得出的結果給pvar....
cxg
中階會員


發表:116
回覆:192
積分:76
註冊:2004-02-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-06-02 16:18:04 IP:222.35.xxx.xxx 未訂閱
引言: 多謝cxg的回答.. 我還有個問就是.. sum(...)as pvar... 是不是得出的結果給pvar....
pvar是列的别名,同数据表的字段名,在调用此函数时定义的。此函数是返回一个字符串,也就是一个SQL语句。
figo
初階會員


發表:47
回覆:70
積分:28
註冊:2004-12-18

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-06-03 09:43:12 IP:202.175.xxx.xxx 未訂閱
cxg不好意思再次打擾你 我的問題都是這個func 從程式裡看到.. 這個func是沒有table名...這樣又如何執行呢.. 我就附上全代碼...  
  function FuncCntr(pRoute: String): string;
  var IO: string;
    function x(pRoute,pServ,pSize, pVar: string): string;
    begin
         result := 'sum(case when substring(sm.sorder_id,1,1)='''   pRoute  
                   ''' and vc.cserv_code_m'   pServ  
                   ' and substring(cnt.Csize,1,2)='''   pSize  
                   ''' then 1 else 0 end) as '   pVar
    end;        function y(pRoute,pSize, pVar: string): string;
    begin
         result := 'sum(case when substring(sm.sorder_id,1,1)='''   pRoute  
                   ''' and substring(cnt.Csize,1,2)='''   pSize  
                   ''' then 1 else 0 end) as '   pVar
    end;
  begin
    if (POS('I',pFlags)>0) and (POS('O',pFlags)>0) then
       IO := uuIIF(pRoute='H','I','O')
    else
       IO := 'X';  // X=means either I or O, it make the QR easier        Result := x(pRoute, '=''CY''',  '20', IO   'CY20')   ','  
              x(pRoute, '=''CY''',  '40', IO   'CY40')   ','  
              x(pRoute, '=''CY''',  '45', IO   'CY45')   ','  
              x(pRoute, '<>''CY''',  '20', IO   'CFS20')   ','  
              x(pRoute, '<>''CY''',  '40', IO   'CFS40')   ','  
              x(pRoute, '<>''CY''',  '45', IO   'CFS45')   ','  
              y(pRoute, '6.', IO   'AIR65')   ','  
              y(pRoute, '10', IO   'AIR10')   ','  
              'sum(case when substring(sm.sorder_id,1,1)='''   pRoute  
              ''' and substring(cnt.Csize,1,2)=''20''  then 1 '  
              'when substring(sm.sorder_id,1,1)='''   pRoute  
              ''' and substring(cnt.Csize,1,1)=''4'' then 2 else 0 end) as '  
              IO   'TEUS'
  end;
這是其中一段func.....我不是太明白...謝謝回答
figo
初階會員


發表:47
回覆:70
積分:28
註冊:2004-12-18

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-06-03 09:45:52 IP:202.175.xxx.xxx 未訂閱
還有 sum(...)as//是不是起到統計作用....
cxg
中階會員


發表:116
回覆:192
積分:76
註冊:2004-02-12

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-06-03 10:16:28 IP:222.35.xxx.xxx 未訂閱
引言: 還有 sum(...)as//是不是起到統計作用....
sum(...)是起統計作用的。 函數 function FuncCntr(pRoute: String): string; 的作用和 function y(pRoute,pSize, pVar: string): string; 的含義是一樣的都是生成一個SQL語句的一部分,他不是一個完整的SQL語句。但這一部分是不能執行的。
figo
初階會員


發表:47
回覆:70
積分:28
註冊:2004-12-18

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-06-03 10:52:12 IP:202.175.xxx.xxx 未訂閱
convert(char(10),sm.sailing,103//?)' convert(char(10),substring(convert(char10),sm.sailing,103),7//?,4//?))    CHARINDEX(vc.Cserv_Code_M,''CY**CFS**TRS'')>0//這句的**有可作用 CHARINDEX(sm.Good_Type,''FF//PA//CA?/PE//OD'')=0//這句的//和?有可作用    
 'from mhsodmas sm inner join Mhsoddet sd '  //inner join是什麼意思,在網上查找不到
                 'on sm.Sorder_Id = sd.Sorder_Id '      
t1.*,是不是= select * from table的意思 在sql convert...103,7,4是什麼含意 在網上看過一些資料...charindex是沒有通用符的...這起不是有錯誤..但它却能run... 再次打擾cxg
cxg
中階會員


發表:116
回覆:192
積分:76
註冊:2004-02-12

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-06-03 12:39:11 IP:222.35.xxx.xxx 未訂閱
引言: convert(char(10),sm.sailing,103//?)' convert(char(10),substring(convert(char10),sm.sailing,103),7//?,4//?)) CHARINDEX(vc.Cserv_Code_M,''CY**CFS**TRS'')>0//這句的**有可作用 CHARINDEX(sm.Good_Type,''FF//PA//CA?/PE//OD'')=0//這句的//和?有可作用
 'from mhsodmas sm inner join Mhsoddet sd '  //inner join是什麼意思,在網上查找不到
                 'on sm.Sorder_Id = sd.Sorder_Id '      
我有一個建議,你以後最好把完整的代碼貼上來,否則別人看起來比較費經。不好意思。其中CY**CFS**TRS 、 FF//PA//CA?/PE//OD 都是字符串。inner join是兩個表的内連接。 至於convert(char(10),sm.sailing,103//?)應該是將sm.sailing強制轉換為CHAR型長度為10。後面的103應該是指英國標準。最後的 //? 我也不清楚時什麽意思。 t1.*,是不是= select * from table的意思 在sql convert...103,7,4是什麼含意 在網上看過一些資料...charindex是沒有通用符的...這起不是有錯誤..但它却能run... 再次打擾cxg
cxg
中階會員


發表:116
回覆:192
積分:76
註冊:2004-02-12

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-06-03 12:42:17 IP:222.35.xxx.xxx 未訂閱
剛才位置貼錯了。 我有一個建議,你以後最好把完整的代碼貼上來,否則別人看起來比較費經。不好意思。其中CY**CFS**TRS 、 FF//PA//CA?/PE//OD 都是字符串。inner join是兩個表的内連接。 至於convert(char(10),sm.sailing,103//?)應該是將sm.sailing強制轉換為CHAR型長度為10。後面的103應該是指英國標準。最後的 //? 我也不清楚時什麽意思。
figo
初階會員


發表:47
回覆:70
積分:28
註冊:2004-12-18

發送簡訊給我
#12 引用回覆 回覆 發表時間:2005-06-03 16:08:58 IP:202.175.xxx.xxx 未訂閱
謝謝回答......
系統時間:2024-07-01 23:05:37
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!