首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于某些条件的SqlServer StoredProcedure返回结果

基于某些条件的SqlServer StoredProcedure返回结果
EN

Stack Overflow用户
提问于 2013-06-27 11:35:04
回答 1查看 93关注 0票数 1

我这里有两张桌子,SQL小提琴

代码语言:javascript
运行
复制
A =tb_status 
B=tb_overhead 


CREATE TABLE tb_status(
    id_estat tinyint IDENTITY(1,1) NOT NULL,
    status_name_estat varchar(50) NOT NULL,
    status_code_estat varchar(20) NULL,
)
INSERT tb_status (status_name_estat,status_code_estat) VALUES ('Admin', 'A')
INSERT tb_status (status_name_estat,status_code_estat) VALUES ('Project Manager', 'B')
INSERT tb_status (status_name_estat,status_code_estat) VALUES ('Office Assistance', 'C')
INSERT tb_status (status_name_estat,status_code_estat) VALUES ('Developer', 'D')
INSERT tb_status (status_name_estat,status_code_estat) VALUES ('Accounts', 'Acc')
INSERT tb_status (status_name_estat,status_code_estat) VALUES ('Staff', 'S')


CREATE TABLE tb_overhead(
    estat_id_oh int NOT NULL,
    overhead_oh decimal(18, 0) NOT NULL,
    hrsperday_oh decimal(18, 0) NOT NULL,
    startdate_oh datetime NOT NULL,
    enddate datetime NULL
) 

INSERT tb_overhead (estat_id_oh,overhead_oh,hrsperday_oh,startdate_oh,enddate) VALUES (2, 2,8 ,'2010-05-21 11:57:56.037', NULL)
INSERT tb_overhead (estat_id_oh,overhead_oh,hrsperday_oh,startdate_oh,enddate) VALUES (4, 2, 8,'2010-05-21 11:57:56.037' , NULL)
INSERT tb_overhead (estat_id_oh,overhead_oh,hrsperday_oh,startdate_oh,enddate) VALUES (8, 2 ,8 ,'2012-02-02 00:00:00.000 ', NULL)
INSERT tb_overhead (estat_id_oh,overhead_oh,hrsperday_oh,startdate_oh,enddate) VALUES (9, 2, 8,'2013-02-02 00:00:00.000', NULL)

我创建了SP- -其中必须更新表A并在表B中插入新记录,条件是currentDate必须更大,然后最后开始日期,然后将结束日期设为减-1天,否则它不会嵌入并显示msg请输入有效日期

代码语言:javascript
运行
复制
Alter proc updateStatus_InsertOverHead
(
@eid int,
@sName varchar(250),
@sCode varchar(250),
@overHead decimal,
@hrs decimal,
@currentStartDate datetime,
@result varchar(max) output
)
as begin
update tb_status set status_name_estat=@sName , status_code_estat=@sCode 
where id_estat=@eid; 

declare @lastStartDate datetime; 
select @lastStartDate= startdate_oh from tb_overhead where estat_id_oh=@eid and enddate is null;

IF @lastStartDate <@currentStartDate
    BEGIN
    update tb_overhead set enddate= DATEADD(day,-1,@currentStartDate) where estat_id_oh=@eid and enddate is null;
    insert into tb_overhead values(@eid,@overHead,@hrs,@currentStartDate,null);
    set @result='Record Updated ';
    END
ELSE
  BEGIN
   set @result = 'Invaild Attemp current date must be greater then previous date'
  END   

END 

执行时出现错误

代码语言:javascript
运行
复制
declare @msg varchar(max),@myDate datetime;
set @myDate = DATEADD(YEAR,-2,getdate());
exec updateStatus_InsertOverHead 4,'Jr Developer','jrD',3,8,@myDate,@msg=@msg output
select @msg as result;

过程或函数'updateStatus_InsertOverHead‘期望参数'@result',这个参数没有提供。

也是在SQLFILLDE中,我如何创建SP

EN

回答 1

Stack Overflow用户

发布于 2013-06-27 11:40:29

试试像这样的东西

代码语言:javascript
运行
复制
declare @msg varchar(max),@myDate datetime
set @myDate  = DATEADD(YEAR,-2,getdate())
exec updateStatus_InsertOverHead 4,'Jr Developer','jrD',3,8,@myDate,@result=@msg output
select @msg as result;

演示

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17342056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档