任何人都可以请指出我在这个存储过程中做错了.我不能让它编译,我的软件没有提供任何有用的线索,它有什么问题.
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) UPDATE
显然我没有包含足够的数据,对不起!
当'campaign_Date'超过90天时,我需要设置'campaign_Status'= 6.
嗨,
我有一个存储DATETIME的列(campaign_Date).使用存储过程我需要检查存储的日期是否为90天(或更长).
任何帮助都会很棒.
谢谢.
使用存储过程我有一个相当复杂的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) 我有2个表,一个有很多记录(表1),另一个表(表2)有相似的数据,但记录少得多.
我需要定期向较大的表中的记录添加一个标记,其中较小的表中有相应的记录.例如,这可以是电子邮件地址.
因此,如果较小的表(表2)中存在电子邮件地址,请在较大的表(表1)中标记
现在,我知道这有点模糊,但实际数据不相关,也不是表/列名.我正在寻找的是想法/建议,这是最有效的方法.
我运行的程序....
A)检查一个表中的记录,然后在另一个表中查找相应的记录?然后标记此记录是否匹配.哪种方式最好?
B)用临时表做点什么?
c)完全不同的东西?请指点.
我希望这是有道理的,我希望你能提供帮助.
谢谢!