C# 在sql server中创建存储过程和视图时出现问题
当我执行以下存储过程代码时,它给出了一个错误,显示无效的列名Lat,Lng。这些Lat和Lng变量是从后面的c代码调用的参数,最后在这个特定的段落中指出了sql查询C# 在sql server中创建存储过程和视图时出现问题,c#,sql,sql-server-2005,C#,Sql,Sql Server 2005,当我执行以下存储过程代码时,它给出了一个错误,显示无效的列名Lat,Lng。这些Lat和Lng变量是从后面的c代码调用的参数,最后在这个特定的段落中指出了sql查询 CREATE FUNCTION spherical_distance(@a float, @b float, @c float) RETURNS float AS BEGIN RETURN ( 6371 * ACOS( COS( (@a/@b) ) * COS( (Lat/@b) ) * COS( ( Lng/@b )
CREATE FUNCTION spherical_distance(@a float, @b float, @c float)
RETURNS float
AS
BEGIN
RETURN ( 6371 * ACOS( COS( (@a/@b) ) * COS( (Lat/@b) ) * COS( ( Lng/@b ) - (@c/@b) ) + SIN( @a/@b ) * SIN( Lat/@b ) ) )
END
create view [dbo].[business] as
SELECT Id,
Name1,
ZipCode,
StreetName,
StreetNumber,
State1,
Lat,
Lng,
Keyword
FROM Business_Details
sqlda.SelectCommand.CommandText = "select *, spherical_distance( Lat, 57.2958, Lng) as distance
from business
where (( distance < '" + radius + "' )
and (StreetName like '%" + streetname + "%')
and (Keyword like '%" + keyword1 + "%' ))
order by spherical_distance(Lat,57.2958,Lng)";
在这些参数前面加上@号怎么样?创建球形距离函数时,它对Lat和Lng表达式一无所知。这应该是函数的两个附加参数,比如@a、@b和@c吗?函数对视图一无所知
稍后调用该函数时,将值从columlat传递到@a,从Lng传递到@c,因此在函数中,这两个参数将包含这些列的值。感谢我的回复,我尝试将@放在Lat和Lng的前面,但它表示错误,称为Msg 137,级别15,状态2,过程距离,第6行必须声明标量变量@Lat.CREATE函数_distance@afloat、@b float、@c float返回float作为BEGIN RETURN 6371*ACOS COS@a/@b*COS@Lat/@b*COS@Lng/@b-@c/@b+SIN@a/@b*SIN@Lat/@b end您的查询受Sql注入的约束。当streetname变量的值为“”时;删除业务单元详细信息;-,运行SelectCommand将清空数据库中的表。此问题已重复如下