如何为存储过程指定默认的值

挨踢直男 2010-04-18 04:40:19
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER procedure [dbo].[_AddLinkMan]
@Name nvarchar(20),
@Tel nvarchar(50),
@QQNum nvarchar(15),
@User_ID nvarchar(20)
As

INSERT LinkMan select @Name,@Tel,@QQNum,(Select ID From User_Info Where User_ID = @User_ID),'-'

GO

如何为 上面的参数指定默认值 如果 没传递参数过来 就使用默认值!
...全文
249 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
挨踢直男 2010-04-18
  • 打赏
  • 举报
回复
了解了 谢谢各位高手
htl258_Tony 2010-04-18
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 aspwebchh 的回复:]
引用 2 楼 htl258 的回复:

SQL code
ALTER procedure [dbo].[_AddLinkMan]
@Name nvarchar(20)='name',
@Tel nvarchar(50)='23235435',
@QQNum nvarchar(15)='32454354',
@User_ID nvarchar(20)='3254'
As
类似这样
……
[/Quote]
create proc sp_test 
@a int=2,
@b int=3,
@c int=4
as
select num=@a+@b+@c
go
exec sp_test
/*
num
-----------
9

(1 行受影响)
*/
exec sp_test @b=4
/*
num
-----------
10

(1 行受影响)
*/
这样应该理解了吧
挨踢直男 2010-04-18
  • 打赏
  • 举报
回复
我调用存储过程的时候出问题了啊


exec _addlinkman 'aaaaaa','13429186203','aspwebchh'

少写个参数就出错


消息 201,级别 16,状态 4,过程 _AddLinkMan,第 0 行
过程或函数 '_AddLinkMan' 需要参数 '@User_ID',但未提供该参数。
dawugui 2010-04-18
  • 打赏
  • 举报
回复
你的语句可能要更改为如下:

INSERT LinkMan 
select isnull(@Name,'默认值'),isnull(@Tel,'默认值'),isnull(@QQNum,'默认值'),isnull(id,'默认值'),'-'
From User_Info
Where User_ID = isnull(@User_ID,'默认值')
htl258_Tony 2010-04-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 aspwebchh 的回复:]
@Name nvarchar(20)= 'aaaaaa'

参数上的这种写法又是干什么用的?
[/Quote]
正是在存储过程中指定参数默认值的写法。
挨踢直男 2010-04-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 htl258 的回复:]

SQL code
ALTER procedure [dbo].[_AddLinkMan]
@Name nvarchar(20)='name',
@Tel nvarchar(50)='23235435',
@QQNum nvarchar(15)='32454354',
@User_ID nvarchar(20)='3254'
As
类似这样
[/Quote]

如果这样 我在调用的时候应该怎么样写

exec _addlinkman 如果少写一个参数会
提示错误的
htl258_Tony 2010-04-18
  • 打赏
  • 举报
回复
调用时如果没有指定参数,就是以默认指定的参数执行过程。
百年树人 2010-04-18
  • 打赏
  • 举报
回复
INSERT LinkMan 
select isnull(@Name,'默认值1'),isnull(@Tel,'默认值2'),isnull(@QQNum,'默认值3'),ID,'-'
From User_Info
Where [User_ID] = @User_ID
挨踢直男 2010-04-18
  • 打赏
  • 举报
回复
@Name nvarchar(20)= 'aaaaaa'

参数上的这种写法又是干什么用的?
htl258_Tony 2010-04-18
  • 打赏
  • 举报
回复
ALTER procedure [dbo].[_AddLinkMan]
@Name nvarchar(20)='name',
@Tel nvarchar(50)='23235435',
@QQNum nvarchar(15)='32454354',
@User_ID nvarchar(20)='3254'
As
类似这样
dawugui 2010-04-18
  • 打赏
  • 举报
回复
isnull(@Name,'默认值')

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧