当前位置:编程学习 > C#/ASP.NET >>

存储过程的基本问题

取出前size条数据记录。代码如下:
create proc dbo.myproc
@size int=10
as
select top @size * from mytable order by id
错误在哪呢? --------------------编程问答--------------------

create   proc   myproc 
@size   int
as
  exec('select   top  '+@size+'   *   mytable   order   by   id')
GO


调用


exec myproc 10 -- 行数
--------------------编程问答-------------------- 楼主,让我怎么说你呢,你在过程中给参数赋了值,什么意思?那还不如直接把10写到代码里,是吧?

二楼正解! --------------------编程问答--------------------

create   proc   myproc 
@size   int=10
as
  exec('select   top  '+@size+'   *   mytable   order   by   id')
GO
-----------------------
楼主是想给@size参数赋一个默认值。当不指定@size的值时,默认为10,当指定时,为指定的值。
即两种调用方式:exec myproc 或:exec myproc 20

--------------------编程问答-------------------- 楼主的思路不清晰 你要是要声明 还是.... --------------------编程问答-------------------- 3楼已经解释的很清楚了. @size=10,的写法没有错,是给默认值的意思.

楼主的问题是sql2k不支持top变量.
SQL2005支持.
SQL2K下可以采用两种方式,1动态语句,2 设置返回行
CREATE PROC p
(@size INT=10)
AS
  EXEC('SElECT TOP ' + @size + ' * FROM tb')



CREATE PROC p
(@size INT=10)
AS
  SET ROWCOUNT @size
  SELECT * FROM tb
  SET ROWCOUNT 0
--------------------编程问答-------------------- 楼主的问题是sql2k不支持top变量.
SQL2005支持.  --------------------编程问答-------------------- 哦 学习了 --------------------编程问答-------------------- 同意5楼的看法!3楼的解法
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,