存储过程中的IF..ELSE逻辑

时间:2020-04-28 05:47:48

标签: sql-server if-statement stored-procedures

我有一个存储过程,需要根据输入参数从表列中提取数据。

如果输入参数为'Y',我只需要从表列中提取'Y'的值,如果它是'N',则需要提取所有值,而与{{1}无关}或'Y''N'

2 个答案:

答案 0 :(得分:1)

虽然这可以表示为if ... else条件,但也可以表示为简单的SELECT <ColumnsList> FROM <TableName> WHERE <Column> = @Param OR @Param = 'N'

<Column>

请注意,这种方法不会阻止您从'P'包含@Param的表中获取所有数据-因为'Y'的值可以是任何值。
如果只需要'N'SELECT <ColumnsList> FROM <TableName> WHERE ( <Column> = @Param AND @Param = 'Y' ) OR @Param = 'N' ,则应添加另一个条件:

@Param

使用此查询,除'Y''N'以外的import re print sum([int(i) for i in re.findall('[0-9]+',open(raw_input('What is the file you want to analyze?\n'),'r').read())]) 值都不会返回表中的任何内容。

答案 1 :(得分:0)

您可以编写存储过程where子句,如下所示。

Create Procedure <YourProcedureName>
@Filter Varchar(20)
as
Begin
  Select <colName1>
  , <ColName2>
  , <ColName..N>
  From <YourTableName>
  where @filter = 'N' OR <YourColName> = @filter
END

您需要替换所需的实际过程名称,以及表和表中的列名。

相关问题