sqlserver如何创建一个带有可不用参数存储过程
有一个问题:如何创建一个带有两个参数的储存过程,在执行该储存过程时其中一个参数是必须写的,而另一个参数可写也可不写,但是写和不写所执行出来的结果又是不一样的?请高手指教!...
有一个问题:
如何创建一个带有两个参数的储存过程,在执行该储存过程时其中一个参数是必须写的,而另一个参数可写也可不写,但是写和不写所执行出来的结果又是不一样的?请高手指教!谢谢 展开
如何创建一个带有两个参数的储存过程,在执行该储存过程时其中一个参数是必须写的,而另一个参数可写也可不写,但是写和不写所执行出来的结果又是不一样的?请高手指教!谢谢 展开
4个回答
展开全部
看帮助,最全面了,有例子有代码有用法。
你的这个,根据参数值是不是默认值来判断就可以了。
USE pubs
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'au_info2' AND type = 'P')
DROP PROCEDURE au_info2
GO
USE pubs
GO
CREATE PROCEDURE au_info2
@lastname varchar(30) = 'D%',
@firstname varchar(18) = '%'
AS
SELECT au_lname, au_fname, title, pub_name
FROM authors a INNER JOIN titleauthor ta
ON a.au_id = ta.au_id INNER JOIN titles t
ON t.title_id = ta.title_id INNER JOIN publishers p
ON t.pub_id = p.pub_id
WHERE au_fname LIKE @firstname
AND au_lname LIKE @lastname
GO
au_info2 存储过程可以用多种组合执行。下面只列出了部分组合:
EXECUTE au_info2
-- Or
EXECUTE au_info2 'Wh%'
-- Or
EXECUTE au_info2 @firstname = 'A%'
-- Or
EXECUTE au_info2 '[CK]ars[OE]n'
-- Or
EXECUTE au_info2 'Hunter', 'Sheryl'
-- Or
EXECUTE au_info2 'H%', 'S%'
你的这个,根据参数值是不是默认值来判断就可以了。
USE pubs
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'au_info2' AND type = 'P')
DROP PROCEDURE au_info2
GO
USE pubs
GO
CREATE PROCEDURE au_info2
@lastname varchar(30) = 'D%',
@firstname varchar(18) = '%'
AS
SELECT au_lname, au_fname, title, pub_name
FROM authors a INNER JOIN titleauthor ta
ON a.au_id = ta.au_id INNER JOIN titles t
ON t.title_id = ta.title_id INNER JOIN publishers p
ON t.pub_id = p.pub_id
WHERE au_fname LIKE @firstname
AND au_lname LIKE @lastname
GO
au_info2 存储过程可以用多种组合执行。下面只列出了部分组合:
EXECUTE au_info2
-- Or
EXECUTE au_info2 'Wh%'
-- Or
EXECUTE au_info2 @firstname = 'A%'
-- Or
EXECUTE au_info2 '[CK]ars[OE]n'
-- Or
EXECUTE au_info2 'Hunter', 'Sheryl'
-- Or
EXECUTE au_info2 'H%', 'S%'
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可写可不写的参数创建时加默认值,另一个必须写的不加,至于执行出来的效果要看你内部的语句了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
设置第二个参数的默认值就是了。
CREATE PROCEDURE XXXX
@paramA INT,
@paramB VARCHAR(8)=NULL
AS
BEGIN
SET NOCOUNT ON;
SELECT @paramA,@paramB;
END;
GO
EXEC XXXX 1;
GO
EXEC XXXX 1,'safdfsdf';
GO
EXEC XXXX;
GO
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
MySQL教程4 MySQL8运算符、函数、存储过程及新增数据类型 17.之创建带有IN和OUT参数的存储过程 学习猿地
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询