小编Mun*_*ish的帖子

IF/ELSE存储过程

任何人都可以请指出我在这个存储过程中做错了.我不能让它编译,我的软件没有提供任何有用的线索,它有什么问题.

CREATE PROCEDURE web.createSubscriptions
   (
   @Member_Id BIGINT,
   @Trans_type VARCHAR(100),
   @Payment_Status VARCHAR(100),
   @Payment_Date DATETIME,
   @Trans_Id VARCHAR(100)
   )

AS
DECLARE @tmpType VARCHAR(15)
BEGIN

INSERT INTO TBL_SUBSCRIPTIONS (subs_MemberID, subs_Type, subs_Status, subs_DateGenerated, subs_PaypalTransaction) VALUES(@Member_Id, @Trans_Type, @Payment_Status, @Payment_Date, @Trans_Id)

IF(@Trans_type = 'subscr_signup')
    BEGIN
    @tmpType = 'premium'
    END
ELSE(@Trans_type = 'subscr_cancel')
    BEGIN
    @tmpType = 'basic'
    END

UPDATE TBL_MEMBERS
SET members_Type = @tmpType
WHERE members_Id = @Member_Id

END
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server stored-procedures sql-server-2005

14
推荐指数
2
解决办法
11万
查看次数

通过存储过程检查DB中的DateTime是否超过90天

UPDATE

显然我没有包含足够的数据,对不起!

当'campaign_Date'超过90天时,我需要设置'campaign_Status'= 6.


嗨,

我有一个存储DATETIME的列(campaign_Date).使用存储过程我需要检查存储的日期是否为90天(或更长).

任何帮助都会很棒.

谢谢.

sql t-sql sql-server datetime sql-server-2005

7
推荐指数
2
解决办法
2万
查看次数

SP返回null为ZERO?

使用存储过程我有一个相当复杂的SQL语句,它返回一个COUNT值作为伪列.在许多情况下,结果将为"null".这会导致我的应用程序出现问题,所以我想知道是否可以从存储过程中默认返回'null'为'0'?

谢谢.

UPDATE

我需要将ISNULL应用于以下声明;

    select recip_Chosen, recip_CampaignId) AS ChosenCount
    from TBL_CAMPAIGNRECIPIENTS
    WHERE recip_CampaignId =  @campaign
    group by recip_Chosen
Run Code Online (Sandbox Code Playgroud)

这应该是什么样的;

    select recip_Chosen, ISNULL(count(recip_CampaignId),0) AS ChosenCount
    from TBL_CAMPAIGNRECIPIENTS
    WHERE recip_CampaignId =  @campaign
    group by recip_Chosen
Run Code Online (Sandbox Code Playgroud)

但是,这仍然会在ChosenCount列中返回null.有任何想法吗?

UPDATE

好的,所以上面的陈述是更大的陈述的一部分,如下所示.这是完整的存储过程,但不是表结构,因为它涉及多个表.我只需要'ChosenCount'来返回'0'而不是Null.SP确实为TBL_CAMPAIGNS_CHARITIES中的每条记录返回1行,其中它对应于TBL_CAMPAIGNS.

CREATE PROCEDURE web.getPublicCampaignData
   (
   @campaign BIGINT
   )
AS
BEGIN

SELECT * 
FROM TBL_CAMPAIGNS C
INNER JOIN TBL_MEMBERS M
    ON C.campaign_MemberId = M.members_Id
INNER JOIN TBL_CAMPAIGNS_CHARITIES CC
    ON C.campaign_Key = CC.camchar_CampaignID
INNER JOIN TBL_CHARITIES CH
    ON CC.camchar_CharityID = CH.cha_Key
LEFT OUTER JOIN (
    select recip_Chosen, …
Run Code Online (Sandbox Code Playgroud)

sql sql-server stored-procedures sql-server-2005

3
推荐指数
2
解决办法
2643
查看次数

检查较大表中的数据与较小的表

我有2个表,一个有很多记录(表1),另一个表(表2)有相似的数据,但记录少得多.

我需要定期向较大的表中的记录添加一个标记,其中较小的表中有相应的记录.例如,这可以是电子邮件地址.

因此,如果较小的表(表2)中存在电子邮件地址,请在较大的表(表1)中标记

现在,我知道这有点模糊,但实际数据不相关,也不是表/列名.我正在寻找的是想法/建议,这是最有效的方法.

我运行的程序....

A)检查一个表中的记录,然后在另一个表中查找相应的记录?然后标记此记录是否匹配.哪种方式最好?

B)用临时表做点什么?

c)完全不同的东西?请指点.

我希望这是有道理的,我希望你能提供帮助.

谢谢!

sql t-sql sql-server stored-procedures sql-server-2005

0
推荐指数
1
解决办法
96
查看次数