sqlserver 存储过程错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlserver 存储过程错误相关的知识,希望对你有一定的参考价值。
use HotelManage
go
if exists(select name from sysobjects where name='Room_Find')
drop proc Room_Find
go
create proc Room_Find @Order varchar(10) , @FloorId int
as
if (@FloorId>0)
begin
select * from Room where FloorID=@FloorId
end
else
begin
select * from Room order by @Order
end
go
执行后会出现
由 ORDER BY 编号 1 标识的 SELECT 项包含一个变量,作为标识列位置的表达式的一部分。按照引用列名的表达式排序时,只允许使用变量。
我这已经声明的变量了啊,怎么会这样??
DECLARE @SQL VARCHar(1000)
set @sql='select * from Room order by ' + @Order
exec (@sql) 参考技术B order by 后面应该写一个字段名,不能写变量或者是值 参考技术C 只能order by 列,或列的一部分
不能order by 一个变量. 参考技术D DECLARE @SQL VARCHar(1000)
set @sql='select * from Room where FloorID='+@FloorId
exec (@sql)追问
我感觉是 select * from Room order by @Order 这句话错了啊
您的那个是怎么回事??
带有变量的SQL不能直接运行,必须使用扩展SQL即EXEC SQL,
本回答被提问者采纳以上是关于sqlserver 存储过程错误的主要内容,如果未能解决你的问题,请参考以下文章