存储过程的基本问题
取出前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
调用
--------------------编程问答-------------------- 楼主,让我怎么说你呢,你在过程中给参数赋了值,什么意思?那还不如直接把10写到代码里,是吧?
exec myproc 10 -- 行数
二楼正解! --------------------编程问答--------------------
--------------------编程问答-------------------- 楼主的思路不清晰 你要是要声明 还是.... --------------------编程问答-------------------- 3楼已经解释的很清楚了. @size=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
楼主的问题是sql2k不支持top变量.
SQL2005支持.
SQL2K下可以采用两种方式,1动态语句,2 设置返回行
CREATE PROC p--------------------编程问答-------------------- 楼主的问题是sql2k不支持top变量.
(@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
SQL2005支持. --------------------编程问答-------------------- 哦 学习了 --------------------编程问答-------------------- 同意5楼的看法!3楼的解法
补充:.NET技术 , ASP.NET