更改存储过程的返回值

时间:2018-02-20 20:00:08

标签: sql sql-server stored-procedures

我使用SQL服务器并希望创建一个存储过程,如果它匹配某个值,它会更改数据的值,例如:

CREATE PROCEDURE [dbo].[usp_GetAnimals] 
AS
SET NOCOUNT ON;
SELECT DISTINCT AnimalId,AnimalName,etc from [dbo].[Animals] order by AnimalName

我想要的是: 例如,如果我发现一只名叫狮子的动物改为狮子或其他名字?

if(AnimalName == 'lion'){
    AnimalName = 'Lion Abc12'
}

类似的东西,但在存储过程中。 我可以用存储过程来完成吗? 顺便说一下,我无法直接在数据库中更改这些值,这就是为什么我会考虑这种方法,你会做什么?

  

我不想大写,而是将其改为另一种不同的方式   值

由于

2 个答案:

答案 0 :(得分:1)

使用选择案例,或者如果有大量记录,请插入临时表并根据需要进行更新。

axis=-1

答案 1 :(得分:1)

这样的东西可以让你设置你想要适应的任何值

CREATE PROCEDURE [dbo].[usp_GetAnimals] 
AS
SET NOCOUNT ON;
SELECT DISTINCT AnimalId,
case 
    when AnimalName='Lion' and pk=1 and fk=2 then 'Lion (Extra Large)'
    when AnimalName='Lion' and pk=4 and fk=1 then 'Lioness'
    when AnimalName='Lion' then 'Default Lion'
    when AnimalName='Aardvark' then 'Aaaaardvark'
    when AnimalName='Poacher' then 'Target'
    else AnimalName end as AnimalName,
etc from [dbo].[Animals] 
order by AnimalName

请注意,SQL Server比较不区分大小写(除非您强制执行此操作),因此 lion Lion LiON 都是相同的