求问为什么会报消息 207,级别 16,状态 1,第 1 行 列名 'E' 无效。的错误

qq_36521894 2017-09-01 04:54:10
set @apple='select @apple_clour=APPLE_CLOUR from dbo.APPLEAREA where APPLE_TYP = "O"'
exec sp_executesql @apple,N'@apple_clour int output',@apple_clour output
select @apple_clour

假设所有定义正确
APPLE_CLOUR 是APPLEAREA的列名
我希望在typ为o的情况下输出整个clour
但是却报e无效,请问,我是在哪里出了问题
...全文
883 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
顺势而为1 2017-09-01
  • 打赏
  • 举报
回复
引用 14 楼 qq_36521894 的回复:
[quote=引用 12 楼 appetizing_fish1 的回复:] [quote=引用 11 楼 qq_36521894 的回复:] [quote=引用 9 楼 appetizing_fish1 的回复:]


DECLARE @apple_clour int
DECLARE @apple nvarchar(max)
set @apple='select @apple_clour=APPLE_CLOUR from dbo.APPLEAREA where APPLE_TYP = '''+'O'+''''
exec sp_executesql @apple,N'@apple_clour int output',@apple_clour output
select @apple_clour

谢谢,这样是可以了,请问后面这个为什么要这么写 还有,我想要的结果可能是好几个,但是他只显示最后一个,请问有什么办法?[/quote] O 是字符串, 不可以用双引号, 在动态SQL中要用两个单引号来转义 [/quote] 谢谢谢谢!非常感谢![/quote] 不用谢, 记得结贴啊
qq_36521894 2017-09-01
  • 打赏
  • 举报
回复
引用 12 楼 appetizing_fish1 的回复:
[quote=引用 11 楼 qq_36521894 的回复:] [quote=引用 9 楼 appetizing_fish1 的回复:]


DECLARE @apple_clour int
DECLARE @apple nvarchar(max)
set @apple='select @apple_clour=APPLE_CLOUR from dbo.APPLEAREA where APPLE_TYP = '''+'O'+''''
exec sp_executesql @apple,N'@apple_clour int output',@apple_clour output
select @apple_clour

谢谢,这样是可以了,请问后面这个为什么要这么写 还有,我想要的结果可能是好几个,但是他只显示最后一个,请问有什么办法?[/quote] O 是字符串, 不可以用双引号, 在动态SQL中要用两个单引号来转义 [/quote] 谢谢谢谢!非常感谢!
听雨停了 2017-09-01
  • 打赏
  • 举报
回复
CREATE TABLE #APPLEAREA(APPLE_CLOUR VARCHAR(20),APPLE_TYP VARCHAR(20)) INSERT INTO #APPLEAREA SELECT 'abcd' AS APPLE_CLOUR ,'O' AS APPLE_TYP UNION ALL SELECT 'abcd','O' DECLARE @apple nVARCHAR(200), @apple_clour nVARCHAR(20) set @apple='select @apple_clour=APPLE_CLOUR from #APPLEAREA where APPLE_TYP = ''O''' exec sp_executesql @apple,N'@apple_clour nVARCHAR(20) output', @apple_clour OUTPUT SELECT @apple_clour 以上定义的变量一定要是nvarchar的,不然会报错
顺势而为1 2017-09-01
  • 打赏
  • 举报
回复
引用 11 楼 qq_36521894 的回复:
[quote=引用 9 楼 appetizing_fish1 的回复:]


DECLARE @apple_clour int
DECLARE @apple nvarchar(max)
set @apple='select @apple_clour=APPLE_CLOUR from dbo.APPLEAREA where APPLE_TYP = '''+'O'+''''
exec sp_executesql @apple,N'@apple_clour int output',@apple_clour output
select @apple_clour

谢谢,这样是可以了,请问后面这个为什么要这么写 还有,我想要的结果可能是好几个,但是他只显示最后一个,请问有什么办法?[/quote] O 是字符串, 不可以用双引号, 在动态SQL中要用两个单引号来转义
qq_36521894 2017-09-01
  • 打赏
  • 举报
回复
引用 9 楼 appetizing_fish1 的回复:


DECLARE @apple_clour int
DECLARE @apple nvarchar(max)
set @apple='select @apple_clour=APPLE_CLOUR from dbo.APPLEAREA where APPLE_TYP = '''+'O'+''''
exec sp_executesql @apple,N'@apple_clour int output',@apple_clour output
select @apple_clour

谢谢,这样是可以了,请问后面这个为什么要这么写 还有,我想要的结果可能是好几个,但是他只显示最后一个,请问有什么办法?
qq_36521894 2017-09-01
  • 打赏
  • 举报
回复
引用 6 楼 zengertao 的回复:
[quote=引用 5 楼 qq_36521894 的回复:] [quote=引用 3 楼 zengertao 的回复:] [quote=引用 楼主 qq_36521894 的回复:] set @apple='select @apple_clour=APPLE_CLOUR from dbo.APPLEAREA where APPLE_TYP = "O"' exec sp_executesql @apple,N'@apple_clour int output',@apple_clour output select @apple_clour 假设所有定义正确 APPLE_CLOUR 是APPLEAREA的列名 我希望在typ为o的情况下输出整个clour 但是却报e无效,请问,我是在哪里出了问题
@apple_clour变量的数据类型换下,你设的是INT,明显APPLE_CLOUR里有字符串的值比如'E' [/quote] 这里写错了,应该是varchar,但是还是报相同的错[/quote] 你直接select APPLE_CLOUR from APPLEAREA where APPLE_TYP = "O"试试,估计你这张是视图里面有问题了 [/quote] 我是想得到的apple_clour放在另一个select的where下作为条件的,而另一个select又是带变量的的 就是 set @other='select @other_qty=count(1) from '+@tother+' where LEFT(name,2) IN (apple的这个循环)
顺势而为1 2017-09-01
  • 打赏
  • 举报
回复


DECLARE @apple_clour int
DECLARE @apple nvarchar(max)
set @apple='select @apple_clour=APPLE_CLOUR from dbo.APPLEAREA where APPLE_TYP = '''+'O'+''''
exec sp_executesql @apple,N'@apple_clour int output',@apple_clour output
select @apple_clour

qq_36521894 2017-09-01
  • 打赏
  • 举报
回复
引用 7 楼 sinat_28984567 的回复:
看你的语句没看出什么问题来,读取的是试图吗?
不是,就是普通的数据表,没有视图
二月十六 版主 2017-09-01
  • 打赏
  • 举报
回复
看你的语句没看出什么问题来,读取的是试图吗?
繁花尽流年 2017-09-01
  • 打赏
  • 举报
回复
引用 5 楼 qq_36521894 的回复:
[quote=引用 3 楼 zengertao 的回复:] [quote=引用 楼主 qq_36521894 的回复:] set @apple='select @apple_clour=APPLE_CLOUR from dbo.APPLEAREA where APPLE_TYP = "O"' exec sp_executesql @apple,N'@apple_clour int output',@apple_clour output select @apple_clour 假设所有定义正确 APPLE_CLOUR 是APPLEAREA的列名 我希望在typ为o的情况下输出整个clour 但是却报e无效,请问,我是在哪里出了问题
@apple_clour变量的数据类型换下,你设的是INT,明显APPLE_CLOUR里有字符串的值比如'E' [/quote] 这里写错了,应该是varchar,但是还是报相同的错[/quote] 你直接select APPLE_CLOUR from APPLEAREA where APPLE_TYP = "O"试试,估计你这张是视图里面有问题了
qq_36521894 2017-09-01
  • 打赏
  • 举报
回复
引用 3 楼 zengertao 的回复:
[quote=引用 楼主 qq_36521894 的回复:] set @apple='select @apple_clour=APPLE_CLOUR from dbo.APPLEAREA where APPLE_TYP = "O"' exec sp_executesql @apple,N'@apple_clour int output',@apple_clour output select @apple_clour 假设所有定义正确 APPLE_CLOUR 是APPLEAREA的列名 我希望在typ为o的情况下输出整个clour 但是却报e无效,请问,我是在哪里出了问题
@apple_clour变量的数据类型换下,你设的是INT,明显APPLE_CLOUR里有字符串的值比如'E' [/quote] 这里写错了,应该是varchar,但是还是报相同的错
qq_36521894 2017-09-01
  • 打赏
  • 举报
回复
引用 1 楼 sinat_28984567 的回复:
哪里有E这一列么?是从试图读取的数据么?
E 不是列名,我想要的是apple_typ这一列的内容
繁花尽流年 2017-09-01
  • 打赏
  • 举报
回复
引用 楼主 qq_36521894 的回复:
set @apple='select @apple_clour=APPLE_CLOUR from dbo.APPLEAREA where APPLE_TYP = "O"' exec sp_executesql @apple,N'@apple_clour int output',@apple_clour output select @apple_clour 假设所有定义正确 APPLE_CLOUR 是APPLEAREA的列名 我希望在typ为o的情况下输出整个clour 但是却报e无效,请问,我是在哪里出了问题
@apple_clour变量的数据类型换下,你设的是INT,明显APPLE_CLOUR里有字符串的值比如'E'
qq_36521894 2017-09-01
  • 打赏
  • 举报
回复
E 不是列名,我想要的是apple_typ这一列的内容
二月十六 版主 2017-09-01
  • 打赏
  • 举报
回复
哪里有E这一列么?是从试图读取的数据么?

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧