我创建了一个存储过程,它获取一个人的姓名,将姓名与表中的值匹配,并通过输出变量返回正确的格式。如果名称不在表/数据库中,则存储过程只需输出原始条目。这部分工作正常。
现在我想在同一个存储过程中同时处理名字和姓氏;例子:
- 如果名字匹配,则输出匹配 -输出变量
- 如果姓氏匹配,则发送匹配 -输出变量
- 如果两个名称都匹配,则通过不同的输出变量发送两个 BUT 的匹配项。
我很难过,因为我不知道如何处理这两个名称,并获得两者或一个,或另一个:
我可以做单独的程序,但那是不明智的。
表名是:(StringFormat)
存储过程:
CREATE PROCEDURE [dbo].[uspFormat]
@FName VARCHAR(30),
@FNameMatchedValue VARCHAR(30) OUTPUT
AS
BEGIN
SET NOCOUNT ON
DECLARE @ValueMatched VARCHAR(30)
SELECT @ValueMatched = StringValue
FROM StringFormat WHERE MatchedValue = @FName;
IF @ValueMatched IS NOT NULL
BEGIN
SET
@FNameMatchedValue = @ValueMatched
END
RETURN 0
END
感谢您的关注:
更新:请查看我的解决方案:
好的,发布后我回去修改了我之前做错的代码:它正在工作,但即使一个名称匹配,它也会返回唯一值。但是我不确定这是最好的方法:
另一个变化:我只是使用了两个 virables 来获得匹配而不是一个:
@FirstNameMatched
和@LastNameMatched
修改后的代码:
CREATE PROCEDURE [dbo].[uspFormat]
@FName VARCHAR(30),
@LName VARCHAR(30),
@FNameMatchedValue VARCHAR(30) OUTPUT,
@LNameMatchedValue VARCHAR(30) OUTPUT
AS
BEGIN
SET NOCOUNT ON
DECLARE @FirstNameMatched VARCHAR(30)
DECLARE @LastNameMatched VARCHAR(30)
SELECT @FirstNameMatched = StringValue
FROM StringFormat WHERE MatchedValue = @FName;
IF @FirstNameMatched IS NOT NULL
BEGIN
SET
@FNameMatchedValue = @FirstNameMatched
END
ELSE
BEGIN
SET @FNameMatchedValue = @FName
END
BEGIN
SELECT @LastNameMatched = StringValue
FROM StringFormat WHERE MatchedValue = @LName;
IF @LastNameMatched IS NOT NULL
BEGIN
SET
@LNameMatchedValue = @LastNameMatched
END
ELSE
BEGIN
SET @LNameMatchedValue = @LName
END
END
RETURN 0
END