关于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
求帮写存储过程
展开
 我来答
yubang2010
2013-09-12 · 超过68用户采纳过TA的回答
知道小有建树答主
回答量:168
采纳率:0%
帮助的人:146万
展开全部
--创建表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'
tim_spac
2013-09-12 · TA获得超过3628个赞
知道大有可为答主
回答量:1804
采纳率:100%
帮助的人:2011万
展开全部
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
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式