我有一个存储过程:

CREATE PROCEDURE MyProc
(
    @Param1  [datetime],
    @Param2  [nvarchar](20),
    @Param3  [nvarchar](20),
    @Param4  [nvarchar](20),
    @Param5  [nvarchar](20),
)
AS
BEGIN
INSERT INTO MyTable1
  (
    Field1,
    Field2,
    Field3,
    Field4,
    Field5
  )
 SELECT
    @Param1,
    @Param2,
    @Param3,
    Field12,
    'constantValue'
FROM   MyTable2
WHERE  Field13 = @Param4
END

我如何更改存储的proc,以便它插入到Field5MyTable1中而不是constantValue,而是另一个查询最后一个参数MyTable2(@Param5)的结果?即:
FROM   MyTable2
WHERE  Field13 = @Param5

最佳答案

INSERT INTO MyTable1
(
  Field1,
  Field2,
  Field3,
  Field4,
  Field5
)
SELECT
    @Param1,
    @Param2,
    @Param3,
    Field12,
    (
         select field_name from MyTable2 where Field13 = @Param5
    )
FROM
    MyTable2
WHERE
    Field13 = @Param4
END

或声明一个新变量:
SET @newparam = (SELECT field_name FROM MyTable2 WHERE Field13 = @Param5 )

然后将此新参数插入insert语句中。

07-24 09:38