我正在创建一个SQL Server存储过程。这是我正在构建的简单package main
import "fmt"
type Product struct{
Price float64
}
func main() {
test1 := Product{Price: 1.00}
test2 := []Product{test1}
fmt.Println(test2)
}
查询。其中一个参数是查找标志参数。如果该参数留空,则SELECT
应默认为不具有SELECT
子句。
WHERE
这只是一个简单的查询和一个简单的想法,不确定是否可以在没有嵌套和重写整个CREATE PROCEDURE sprocA
@flagInd int
AS
BEGIN
SELECT
intID, strQuestion, strAnswer, intCategory, intOrder
FROM
tblA
-- Right here is where I am looking for the logic of the @flagInd to be evaluated.....
-- if @flagInd = 1 then 'WHERE flgInd=1'
-- else if @flagInd=0 then 'WHERE flgInd=0'
-- else if @flagInd IS NULL then ''
语句作为IF语句的一部分的情况下完成。
答案 0 :(得分:3)
这可以这样做:
SELECT intID, strQuestion, strAnswer, intCategory, intOrder
FROM tblA
WHERE flgInd = @flgInd OR @flgInd IS NULL;
您还可以使用CASE
表达式:
SELECT intID, strQuestion, strAnswer, intCategory, intOrder
FROM tblA
WHERE CASE
WHEN flgInd = @flgInd THEN 1
WHEN @flgInd IS NULL THEN 1
ELSE 0
END = 1;
答案 1 :(得分:-1)
似乎只有一对一的映射(从参数到列),为什么不使用简单的where
子句?
CREATE PROCEDURE sprocA
@flagInd int
AS
BEGIN
SELECT intID, strQuestion, strAnswer, intCategory, intOrder
FROM tblA WHERE flgInd = @flagInd;