简单的SQL SERVER 存储过程编写

Wtcwtc0828 2017-09-20 08:56:35
求大神指点一下:
打算写一个存储过程,但是写的过程中遇到些问题,具体要求是
首先 把输入的几个字段显示出来
然后再将数据库中已经存在的数据和输入的参数进行对比,如果相同,IsValid为1,不相同IsValid为0
运行结果类似于下图这种!
非常感谢!
...全文
420 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Wtcwtc0828 2017-09-20
  • 打赏
  • 举报
回复
引用 2 楼 sinat_28984567 的回复:
--测试数据
if not object_id(N'T') is null
	drop table T
Go
Create table T([name] nvarchar(22),[mobilephone] BIGINT)
Insert T
select N'张三',13311111111 union all
select N'李四',13311111111
Go
--测试数据结束
SELECT * FROM T
CREATE PROC dbo.proA
    @name NVARCHAR(100) ,
    @mobilephone BIGINT
AS
    BEGIN   
        SELECT  @name AS name,
                NULL AS IsValid ,
                @mobilephone AS mobilephone ,
                NULL AS IsValid
        UNION ALL
        SELECT  name ,
                CASE WHEN name = @name THEN 1
                     ELSE 0
                END ,
                mobilephone ,
                CASE WHEN mobilephone = @mobilephone THEN 1
                     ELSE 0
                END
        FROM    T
    END
GO
EXEC dbo.proA @name = N'张三', -- nvarchar(100)
    @mobilephone = 13311111111 -- bigint
好的 我去写着试试看,谢谢您,
Wtcwtc0828 2017-09-20
  • 打赏
  • 举报
回复
引用 1 楼 z10843087 的回复:
[quote=引用 楼主 Wtcwtc0828 的回复:] 求大神指点一下: 打算写一个存储过程,但是写的过程中遇到些问题,具体要求是 首先 把输入的几个字段显示出来 然后再将数据库中已经存在的数据和输入的参数进行对比,如果相同,IsValid为1,不相同IsValid为0 运行结果类似于下图这种! 非常感谢!

CREATE TABLE table1 (NAME varchar(20) ,MobilePhont varchar(20))
INSERT INTO table1 VALUES('jace','132224')
CREATE  PROC my_proc
@NAME varchar(20),@MobilePhont varchar(20)
AS
BEGIN

SELECT '之前',@NAME,0,@MobilePhont,0
UNION all
SELECT '之后',NAME,(CASE WHEN NAME=@NAME THEN 1 ELSE 0 END)AS valid1 ,MobilePhont, (CASE WHEN MobilePhont=@MobilePhont
 THEN 1 ELSE 0 END )AS valid2 FROM  TABLE1 

END


EXEC my_proc 'jace','132224'
这样[/quote] 非常感谢大神耐心的指导 刚试着根据您给的自己写了下,运行出来了, 再次感谢!
二月十六 2017-09-20
  • 打赏
  • 举报
回复
--测试数据
if not object_id(N'T') is null
drop table T
Go
Create table T([name] nvarchar(22),[mobilephone] BIGINT)
Insert T
select N'张三',13311111111 union all
select N'李四',13311111111
Go
--测试数据结束
SELECT * FROM T


CREATE PROC dbo.proA
@name NVARCHAR(100) ,
@mobilephone BIGINT
AS
BEGIN
SELECT @name AS name,
NULL AS IsValid ,
@mobilephone AS mobilephone ,
NULL AS IsValid
UNION ALL
SELECT name ,
CASE WHEN name = @name THEN 1
ELSE 0
END ,
mobilephone ,
CASE WHEN mobilephone = @mobilephone THEN 1
ELSE 0
END
FROM T
END
GO

EXEC dbo.proA @name = N'张三', -- nvarchar(100)
@mobilephone = 13311111111 -- bigint


OwenZeng_DBA 2017-09-20
  • 打赏
  • 举报
回复
引用 楼主 Wtcwtc0828 的回复:
求大神指点一下: 打算写一个存储过程,但是写的过程中遇到些问题,具体要求是 首先 把输入的几个字段显示出来 然后再将数据库中已经存在的数据和输入的参数进行对比,如果相同,IsValid为1,不相同IsValid为0 运行结果类似于下图这种! 非常感谢!

CREATE TABLE table1 (NAME varchar(20) ,MobilePhont varchar(20))
INSERT INTO table1 VALUES('jace','132224')
CREATE  PROC my_proc
@NAME varchar(20),@MobilePhont varchar(20)
AS
BEGIN

SELECT '之前',@NAME,0,@MobilePhont,0
UNION all
SELECT '之后',NAME,(CASE WHEN NAME=@NAME THEN 1 ELSE 0 END)AS valid1 ,MobilePhont, (CASE WHEN MobilePhont=@MobilePhont
 THEN 1 ELSE 0 END )AS valid2 FROM  TABLE1 

END


EXEC my_proc 'jace','132224'
这样

22,297

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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