1
我已經創建了一個稱爲業務的視圖,它運行成功,但問題是我將如何使用動態值來代替12.925432,77.5940171,我想從SQL查詢中傳遞參數後面的c#代碼。如何將值傳遞到SQL Server中的視圖
create view [dbo].[business] as
SELECT Id,
Name1,
ZipCode,
StreetName,
StreetNumber,
State1,
Lat,
Lng,
Keyword,
(6371 * ACOS(COS((12.925432/57.2958)) * COS( (Lat/57.2958) ) * COS((Lng/57.2958) - (77.5940171/57.2958)) + SIN(12.925432/57.2958) * SIN( Lat/57.2958 ))) AS distance
FROM Business_Details ;
這將是我從後面的c#代碼查詢。 ....
DataSet ds = new DataSet();
SqlCommand com = new SqlCommand();
SqlDataAdapter sqlda = new SqlDataAdapter(com);
//sqlda.SelectCommand.CommandText = "SELECT Id,Name1,ZipCode,StreetName,StreetNumber,State1,Lat,Lng,Keyword, (6371 * ACOS(COS((12.925432/57.2958)) * COS( (Lat/57.2958) ) * COS((Lng/57.2958) - (77.5940171/57.2958)) + SIN(12.925432/57.2958) * SIN( Lat/57.2958 ))) AS distance FROM Business_Details where((StreetName like '%jayanagar%')and (Keyword like '%plumbing%'))ORDER BY distance;";
sqlda.SelectCommand.CommandText = "select *
from business
where ((distance < '" + radius + "')
and (StreetName like '%" + streetname + "%')
and (Keyword like '%" + keyword1 + "%'))
order by distance";
sqlda.SelectCommand.Connection = con;
sqlda.Fill(ds);
con.Close();
.....
+1:你打我到id。非物化視圖主要用於只讀操作。有可更新的非物化視圖,但這只是將更新掩蓋到支持表中......這與OP需要的實際功能沒有任何關係 – 2010-09-01 04:16:47
感謝您的回覆,創建用戶定義的函數不起作用 CREATE FUNCTION spherical_distance(@a float,@b float,@c float) RETURNS float AS BEGIN RETURN(6371 * ACOS(COS((@ a/@ b))* COS((Lat/b) )* SIN(@ a/@ b)* SIN(Lat/@ b))) END 它顯示指示無效列名Lat的錯誤, Lng – mahesh 2010-09-01 04:34:59
我已經開始了你的等式,所以如果Lat,Lng在那裏是錯誤的,他們在我的udf例子中是錯誤的。修復你所需要的東西。 – BlackICE 2010-09-01 13:03:28