• 主页
  • 基础类
  • 应用实例
  • 新技术前沿

如何写一存储过程实现以下功能:

valu 南京骏蝶科技有限公司 CEO/董事长/总经理  2009-10-09 11:01:52
create procedure sp_select_area
@id int
as
begin
--默认选择所有地区
select * from area
end



@id 为空时选择所有地区
@id 不为空时,选择指定的地区
如何实现?
...全文
98 点赞 收藏 14
写回复
14 条回复
valu 2009年10月10日
请问7楼,在asp.net里怎么实际可能为null的参数传递呢?
回复 点赞
百年树人 2009年10月10日
[Quote=引用 4 楼 valu 的回复:]
create procedure sp_select_area
    @id int,
    @city nvarchar(20),
    @is_zx tinyint
as
begin
    --默认选择所有地区
    select * from area
end


如果有多个参数呢?
[/Quote]

create procedure sp_select_area
@id int=null,
@city nvarchar(20)=null,
@is_zx tinyint=null
as
begin
--默认选择所有地区
select * from area
where id=isnull(@id,id)
and city=isnull(@city,city)
and is_zx=isnull(@is_zx,is_zx)
end
go
回复 点赞
q85958341 2009年10月10日

create procedure sp_select_area
@id int=null,
@city nvarchar(20)=null,
@is_zx tinyint=null
as
begin
--默认选择所有地区
select * from area
where id=isnull(@id,id)
and city=isnull(@city,city)
and is_zx=isnull(@is_zx,is_zx)
end
go

回复 点赞
老七 2009年10月10日
7楼简洁明了
回复 点赞
navy887 2009年10月10日
create procedure sp_select_area 
@id int,
@city nvarchar(20),
@is_zx tinyint
as
begin
if @id is null
select * from area
else
select * from area where area=@city
end
回复 点赞
yuzhifu1 2009年10月10日
学习
回复 点赞
qiqi860819 2009年10月10日

create procedure sp_select_area
@id int
as
begin
declare @str varchar(1024)
set @str='select * from area where 1=1';
if @id is not null
set @str=@str+' and id='+cast(@id as varchar(4))+'';
exec (@str)
end

回复 点赞
guguda2008 2009年10月10日
自己在程序里先判断一下
回复 点赞
bancxc 2009年10月09日

--可以这样写
create procedure sp_select_area
@id int null,
@city nvarchar(20) null,
@is_zx tinyint null
as
begin

declare @strwhere nvarchar(4000)

set @strwhere = ' 1=1'
if @id is not null
set @strwhere = @strwhere + ' and id='+@id

if @city is not null
set @strwhere = @strwhere + ' and city='''+@city''''
if @city is not null
set @strwhere = @strwhere + ' and is_zx='+@is_zx
exec('select * from area where '+@strwhere)
end

回复 点赞
bancxc 2009年10月09日
只能多个
if
elseif
....
else
回复 点赞
valu 2009年10月09日
create procedure sp_select_area
@id int,
@city nvarchar(20),
@is_zx tinyint
as
begin
--默认选择所有地区
select * from area
end


如果有多个参数呢?
回复 点赞
bancxc 2009年10月09日
create procedure sp_select_area 
@id int = null
as
begin
if @id is null
select * from area
else
select * from area where id=@id
end
回复 点赞
lunzi028 2009年10月09日
只要有 id 和area 的关系
用if else 即可
回复 点赞
rucypli 2009年10月09日
create procedure sp_select_area
@id int = null
as
begin
if @id is null
select * from area
else
....
end
回复 点赞
发动态
发帖子
MS-SQL Server
创建于2007-09-28

1.4w+

社区成员

25.3w+

社区内容

MS-SQL Server相关内容讨论专区
社区公告
暂无公告