将数据类型varchar转换为存储过程中的float时出错

时间:2014-08-26 16:58:27

标签: sql sql-server stored-procedures

我在论坛上尝试了很多方法,但没有成功。我有一张叫做省的桌子。我想要访问的表中的列是手动输入的。可以看出,但我在标题中得到了错误。我的SQL代码如下

create proc test 
(
@column_city varchar (500), 
@city_n varchar (500) 
) 
as 
begin 
declare @sql nvarchar (1000) 
set @sql = 'SELECT' + @ column_city + 'FROM a distance where city =' +city_n
exec (sql) 
end 

exec test "istanbul", "chicago" 

当我运行上面的代码“Msg 8114,Level 16,State 5,Line 1 将数据类型varchar转换为float时出错。 “我得错误

伊斯坦布尔是一个专栏的名称。安卡拉发送到城市列是值。将计算距离的两个城市。通常当我写sql查询时正在运行。发送到伊斯坦布尔,我重视写作和工作的目标

select istanbul from distance
where CITY_NAME = 'ankara' 

我一直是描述性的

1 个答案:

答案 0 :(得分:0)

您的查询在语法上是不正确的。试试这个:

create proc test 
(
@column_city varchar (500), 
@city_n varchar (500) 
) 
as 
begin 
declare @sql nvarchar (1000) 
set @ sql = 'SELECT QUOTENAME(''' + @ column_city + ''') FROM distance where city =' +@ city_n 
exec (@sql) 
end 

然后你需要像这样执行它:

exec test 'istanbul', 'chicago'