• 全部
  • 基础类
  • 应用实例
  • 新技术前沿

存储过程不能声名临时变量,只能声名参数吗?

xuege 2003-05-20 08:16:35
我有个挺麻烦的计算,需要查询很多表的很多数据,
所以想写成存储过程,但是一定得要用到很多的临时变量,
我试着写在存储过程里,可总说无效,怎么办呢?
兄弟们,有什么好的意见吗?
...全文
128 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
happydreamer 2003-05-20
应该可以的 ,你贴一点代码出来看看
回复
pengdali 2003-05-20
declare @临时变量1 int,@临时变量2 varchar(100),@临时变量3 datetime
..
回复
pengdali 2003-05-20
临时变量这样:

create proc 过程名
as
declare @临时变量 int
set @临时变量=1
....
回复
caiyunxia 2003-05-20
CREATE PROCEDURE
创建存储过程,存储过程是保存起来的可以接受和返回用户提供的参数的 Transact-SQL 语句的集合。

可以创建一个过程供永久使用,或在一个会话中临时使用(局部临时过程),或在所有会话中临时使用(全局临时过程)。

也可以创建在 Microsoft® SQL Server™ 启动时自动运行的存储过程。

语法
CREATE PROC [ EDURE ] procedure_name [ ; number ]
[ { @parameter data_type }
[ VARYING ] [ = default ] [ OUTPUT ]
] [ ,...n ]

[ WITH
{ RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ]

[ FOR REPLICATION ]

AS sql_statement [ ...n ]


参数
procedure_name

新存储过程的名称。过程名必须符合标识符规则,且对于数据库及其所有者必须唯一。有关更多信息,请参见使用标识符。

要创建局部临时过程,可以在 procedure_name 前面加一个编号符 (#procedure_name),要创建全局临时过程,可以在 procedure_name 前面加两个编号符 (##procedure_name)。完整的名称(包括 # 或 ##)不能超过 128 个字符。指定过程所有者的名称是可选的。

;number

是可选的整数,用来对同名的过程分组,以便用一条 DROP PROCEDURE 语句即可将同组的过程一起除去。例如,名为 orders 的应用程序使用的过程可以命名为 orderproc;1、orderproc;2 等。DROP PROCEDURE orderproc 语句将除去整个组。如果名称中包含定界标识符,则数字不应包含在标识符中,只应在 procedure_name 前后使用适当的定界符。

@parameter

过程中的参数。在 CREATE PROCEDURE 语句中可以声明一个或多个参数。用户必须在执行过程时提供每个所声明参数的值(除非定义了该参数的默认值)。存储过程最多可以有 2.100 个参数。

使用 @ 符号作为第一个字符来指定参数名称。参数名称必须符合标识符的规则。每个过程的参数仅用于该过程本身;相同的参数名称可以用在其它过程中。默认情况下,参数只能代替常量,而不能用于代替表名、列名或其它数据库对象的名称。有关更多信息,请参见 EXECUTE。

data_type

参数的数据类型。所有数据类型(包括 text、ntext 和 image)均可以用作存储过程的参数。不过,cursor 数据类型只能用于 OUTPUT 参数。如果指定的数据类型为 cursor,也必须同时指定 VARYING 和 OUTPUT 关键字。有关 SQL Server 提供的数据类型及其语法的更多信息,请参见数据类型。



说明 对于可以是 cursor 数据类型的输出参数,没有最大数目的限制。

回复
caiyunxia 2003-05-20
存储过程最多可以有 2.100 个参数。
回复
caiyunxia 2003-05-20
没问题呀
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2003-05-20 08:16
社区公告
暂无公告