我在论坛上尝试了很多方法,但没有成功。我有一张叫做省的桌子。我想要访问的表中的列是手动输入的。可以看出,但我在标题中得到了错误。我的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'
我一直是描述性的
答案 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'