gpt4 book ai didi

SQL Server 2005 有条件地在 SP 中分配变量

转载 作者:行者123 更新时间:2023-12-04 06:20:19 24 4
gpt4 key购买 nike

这是我尝试在 SQL Server 2005 中编写的存储过程的简化版本。

我的问题是这样的:

我已经声明了一个变量 @docid我想在遍历游标时将查询结果分配给它,如果没有完全匹配,那么我想运行另一个查询并尝试下一个最佳匹配。

我尝试进行测试,上面写着 IF @docid IS NULL then BEGIN [second query] .这不起作用,因为变量 @docid不会Null它只会保留先前的值,直到满足第一个查询的条件并为其分配一个新值。

那么我怎么能说“如果我尝试为变量@docid 分配一个 docid,但根据查询中的条件没有匹配项,则运行下一个查询或 set @docid=''" ?任何帮助将不胜感激。谢谢

declare @docid bigint,
@account varchar(30)

While @@fetch_status=0
BEGIN
Select @Docid=Docid
FROM printdata
WHERE Account=@account

IF @docid Is Null --Docid Is never Null once assigned a value
BEGIN
Select @Docid=Docid
FROM printdata
WHERE balance=@balance
END

最佳答案

好吧,我只是先初始化 @docid为 NULL - 那么它 如果没有找到,则为 NULL:

declare @docid bigint,
@account varchar(30)

While @@fetch_status=0
BEGIN
SET @docid = NULL

SELECT @Docid = Docid
FROM printdata
WHERE Account = @account

IF @docid IS NULL -- @Docid *WILL* be NULL now if nothing is found!
BEGIN
SELECT @Docid = Docid
FROM printdata
WHERE balance = @balance
END

关于SQL Server 2005 有条件地在 SP 中分配变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6667830/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com