sqlserver 存储过程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlserver 存储过程相关的知识,希望对你有一定的参考价值。

select into std([name],address,email,sex)
values('韩国','上海','hd',0)
select * from std
说 “into 附近有错误”

参考技术A insert into std([name],address,email,sex)
values('韩国','上海','hd',0)



insert into std([name],address,email,sex)
select '韩国','上海','hd',0本回答被提问者采纳
参考技术B insert into std([name],address,email,sex)
values('韩国','上海','hd',0)

应该这样做

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 项包含一个变量,作为标识列位置的表达式的一部分。按照引用列名的表达式排序时,只允许使用变量。
我这已经声明的变量了啊,怎么会这样??

参考技术A 用动态sql吧。排序列里面不允许使用变量的。
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 存储过程的主要内容,如果未能解决你的问题,请参考以下文章

sqlserver 怎么更新存储过程

sqlserver 如何修改存储过程的名字

sqlserver 存储过程错误

sql server 存储过程如何调用存储过程

SqlServer存储过程

如何使sqlserver存储过程返回varchar