嵌套查询如何

时间:2011-05-31 08:10:37

标签: sql tsql sql-server-2008

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中获取。如果任何人有一个较短的方法,请指导我。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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 

答案 2 :(得分: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