Sql server 更新存储过程MS SQL后检查记录值
这将执行一个存储过程Sql server 更新存储过程MS SQL后检查记录值,sql-server,Sql Server,这将执行一个存储过程 EXEC dbo.Web_update @hHomeEmail = 'me@me.com', @pPassword = 'XXXXX', @mMemberID = '123456' 存储过程 UPDATE Member SET pass_w = @pPassword, HomeEmail = @hHomeEmail WHERE MemberID=@mMemberID; 我想检查HomeEmail的值,并在更新后传递w(如果为NULL或不返回布尔值)作为
EXEC dbo.Web_update
@hHomeEmail = 'me@me.com',
@pPassword = 'XXXXX',
@mMemberID = '123456'
存储过程
UPDATE Member
SET pass_w = @pPassword,
HomeEmail = @hHomeEmail
WHERE MemberID=@mMemberID;
我想检查HomeEmail的值,并在更新后传递w(如果为NULL或不返回布尔值)作为该调用的结果
----------更新----------
现在我想检查一下:
pass_w=NULL
或
通过w=“”
或
HomeEmail=NULL
或
HomeEmail=''
如果其中一个被强制转换(1为位)
ELSE CAST(0为位)您可以将输出参数添加到存储过程中:
CREATE PROCEDURE dbo.Web_update
(
@hHomeEmail = varchar(10),
@pPassword = varchar(10),
@mMemberID = varchar(10)
@@pIsNull bit OUTPUT
)
AS
UPDATE Member
SET pass_w = @pPassword,
HomeEmail = @hHomeEmail
WHERE MemberID=@mMemberID;
SELECT @pIsNull = CAST(CASE WHEN EXISTS (
SELECT 1
FROM Member
WHERE MemberID=@mMemberID
AND pass_w IS NULL
AND HomeEmail IS NULL) THEN 1
ELSE 0 END As Bit)
为什么首先在这些列中允许null?HomeEmail和pass_w都允许null的原因可能是重复的,稍后会添加到成员表中。现在,会员可以在线登录,但必须更新HomeEmail并通过才能继续。
CREATE PROCEDURE dbo.Web_update
(
@hHomeEmail = varchar(10),
@pPassword = varchar(10),
@mMemberID = varchar(10)
@@pIsNull bit OUTPUT
)
AS
UPDATE Member
SET pass_w = @pPassword,
HomeEmail = @hHomeEmail
WHERE MemberID=@mMemberID;
SELECT @pIsNull = CAST(CASE WHEN EXISTS (
SELECT 1
FROM Member
WHERE MemberID=@mMemberID
AND pass_w IS NULL
AND HomeEmail IS NULL) THEN 1
ELSE 0 END As Bit)