关于SQL Server创建语句
up_retrieve_medince@medidint,@pattypeint,@patsubtypeint,@cbpattypeint--这是存储过程名字和对应参数要...
up_retrieve_medince @medid int ,@pattype int,@patsubtype int,@cbpattype int--这是存储过程名字和对应参数
要求程序在给予这个存储过程参数之后,执行该存储过程,显示出一个返回值1或0
当@medid对应A表内的id的时候,返回值为0
else
则判定 @medid,@pattype,@patsubtype,@cbpattype 这几个字段对应B表内的medid,pattype,patsubtype,cbpattype这几个字段的时候返回值为1
求帮写存储过程 展开
要求程序在给予这个存储过程参数之后,执行该存储过程,显示出一个返回值1或0
当@medid对应A表内的id的时候,返回值为0
else
则判定 @medid,@pattype,@patsubtype,@cbpattype 这几个字段对应B表内的medid,pattype,patsubtype,cbpattype这几个字段的时候返回值为1
求帮写存储过程 展开
2个回答
展开全部
--创建表A
IF EXISTS (SELECT * FROM SYSOBJECTS WHERE NAME='A')
DROP TABLE A
GO
CREATE TABLE A
(
ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
Discpt VARCHAR(50) NULL
)
GO
--创建表B
IF EXISTS (SELECT * FROM SYSOBJECTS WHERE NAME='B')
DROP TABLE B
GO
CREATE TABLE B
(
Medid INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
Pattype VARCHAR(50) NULL,
Patsubtype VARCHAR(50) NULL,
Cbpattype VARCHAR(50) NULL
)
GO
--插入数据
INSERT INTO A(Discpt)
SELECT '张三'
UNION
SELECT '李四'
INSERT INTO B(Pattype,Patsubtype,Cbpattype)
SELECT '01','001','0001'
UNION
SELECT '02','002','0002'
GO
--创建存储过程
IF EXISTS (SELECT * FROM SYSOBJECTS WHERE NAME='up_retrieve_medince')
DROP PROC up_retrieve_medince
GO
CREATE PROC up_retrieve_medince
(
@medid int,
@pattype VARCHAR(50),
@patsubtype VARCHAR(50),
@cbpattype VARCHAR(50)
)
AS
IF EXISTS (SELECT id FROM A WHERE id=@medid)
BEGIN
SELECT 0
RETURN
END
ELSE
BEGIN
IF EXISTS (SELECT medid FROM B WHERE medid=@medid)
AND EXISTS (SELECT pattype FROM B WHERE pattype=@pattype)
AND EXISTS (SELECT patsubtype FROM B WHERE patsubtype=@patsubtype)
AND EXISTS (SELECT cbpattype FROM B WHERE cbpattype=@cbpattype)
BEGIN
SELECT 1
RETURN
END
END
GO
--EXEC up_retrieve_medince 1,'01','001','0001'
展开全部
create procedure up_retrieve_medince
@medid int
,@pattype int
,@patsubtype int
,@cbpattype int
as begin
if not exists (select 1 from A表 where id=@medid) and
exists (select 1 from B表 where @medid=medid
and @pattype=pattype
and @patsubtype=patsubtype
and @cbpattype=cbpattype)
return 1
else
return 0
end
更多追问追答
追问
感谢你,不过我执行了这个存储过程,只显示命令已成功完成,没有显示1或0 麻烦帮忙看看, 谢谢
还有,medid对应A表里面的id 的时候 取0
如果不对应的话 直接判断那几个参数在B表中是否对应 ,对应的上的 也取0
对应不上的 才取1
追答
create procedure up_retrieve_medince
@medid int
,@pattype int
,@patsubtype int
,@cbpattype int
as begin
if exists (select 1 from A表 where id=@medid) or
exists (select 1 from B表 where @medid=medid
and @pattype=pattype
and @patsubtype=patsubtype
and @cbpattype=cbpattype)
begin
print '0'
return 0
end
else
begin
print '1'
return 1
end
end
go
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询