sqlserver存储过程语法错误的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlserver存储过程语法错误的问题相关的知识,希望对你有一定的参考价值。
CREATE PROCEDURE [ttt] @ta char(20) AS
select mem from ' + @ta + '
总是提示语法错误,请高手帮忙
exec('select mem from '+ @ta) 参考技术A CREATE PROCEDURE [ttt] @ta nvarchar(20) AS
exec('select mem from '+ @ta)
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存储过程语法错误的问题的主要内容,如果未能解决你的问题,请参考以下文章