2015-06-09 51 views
-4

我是TSQL的新手,並且正在嘗試創建一個計算經度並給出半徑的函數。我知道該怎麼做,在C#中,但現在有困難,將其轉化爲T-SQL,這是多部分功能有沒有辦法創建一個像這樣的用戶定義函數

1. double Long = (Math.Cos((double)2.55 * (Math.PI/180)) * 69); 
    2. double milesss = 10/Long; 
    3. item.TenLonMin = Math.Round(((double)item.longitudes - milesss), 6); 

回答所有的這是第3步,我想提出的是這裏面

UPDATE zips 
SET 
TwoLonMax= answer to step 3 here 

我該如何去做這件事?我試圖找出如何插入用戶定義函數的結果。

+0

您是否看過用於創建標量函數的[documentation](https://msdn.microsoft.com/en-us/library/ms186755.aspx)?提示:使用適當的軟件(MySQL,Oracle,DB2,...)和版本(例如, '的SQL服務器2014'。語法和功能的差異往往會影響答案。我假設你使用的是某種版本的SQL Server。 – HABO

+0

對不起,現在會閱讀它,是的,它是MYSQL 2012.我對此很新,並認爲不同版本之間TSQL有很大差異。 – user1591668

回答

1

是的,你可以做到這一點的T-SQL,但是它的性能會很差,C#,C++和大多數編程語言比較:

CREATE FUNCTION GET_ITEM_TENLONMIN(@LONGITUDES FLOAT) 
RETURNS FLOAT 
AS 
BEGIN 
DECLARE @LONG FLOAT; 
SET @LONG=COS(2.55 * (PI()/180)) * 69; 
DECLARE @MILESSS FLOAT; 
SET @MILESSS = 10/@LONG; 
RETURN @LONGITUDES - @MILESSS; 
END; 

我只是用自己的計算方法。

+0

它看起來像你試圖重新發明輪子! SQL Server包含空間數據類型(如地理數據類型),並已包含所有計算和使用此類型的函數,如計算經度。點擊此鏈接: https://msdn.microsoft.com/en-us/library/bb964711.aspx –

相關問題