2011-05-31 58 views
0
ALTER PROCEDURE dbo.updateadmin 
(
    @ReportRead char(10), 
    @Date date,@EmpName varchar(50), 
    @Subject nchar(50) 
) 
AS 
    insert into Emp_ReportUpdate (ReportRead,[Date],EmpName,Subject) 
    values(@ReportRead,@Date,@EmpName,@Subject) 
    RETURN 

這是我的過程,並在@EmpName我需要一個SELECT語句中使用,使得從另一個表中獲取數據,並把它在@EmpN。如果任何一個有一個更短的方法指導我。嵌套查詢如何

+2

目前尚不清楚你想要什麼?從另一個表插入一些值? INSERT..VALUES之後的SELECT?什麼是@EmpN? – gbn 2011-05-31 08:18:01

回答

0
ALTER PROCEDURE dbo.updateadmin 
(
    @ReportRead char(10), @Date date, @EmpName varchar(50), @Subject nchar(50) 
) AS 
SELECT @EmpName = somecol FROM OTHERTABLE 

insert into Emp_ReportUpdate 
(ReportRead, [Date], EmpName, Subject) 
VALUES 
(@ReportRead, @Date, @EmpName, @Subject) 

RETURN 
1

INSERT..SELECT。

你可以工作,其餘的自己當然是因爲我們沒有這方面的資料......

ALTER PROCEDURE dbo.updateadmin 

    (
    @ReportRead char(10),@Date date,@EmpName varchar(50),@Subject nchar(50) 
    ) 

AS 
    insert into Emp_ReportUpdate (ReportRead,[Date],EmpName,Subject) 
    select @ReportRead, @Date, someOtherCol, @Subject 
    from myothertable 
    where somecol = @EmpName 
RETURN 
0

您還可以使用CTE。如果您的存儲過程可能變得更加複雜,並且此查詢可能會多次使用,這可能會對您有所幫助。所以爲了擺脫重複,我們可以使用CTE。

ALTER PROCEDURE dbo.updateadmin 

    (
     @ReportRead char(10), 
     @Date date, 
     @EmpName varchar(50), 
     @Subject nchar(50) 
    ) 

AS 
    With CTE 
    AS 
    (
     Select YourColumnName from YourTableName Where YourColumnName = @EmpName 
    ) 

    insert into Emp_ReportUpdate (ReportRead,[Date],EmpName,Subject) 
    Select @ReportRead, @Date, YourColumnName, @Subject 
    From CTE 

    RETURN