0

我的存储过程是这样的

 ALTER PROCEDURE [dbo].[kt_insernotes]
     (@DATASET  NVARCHAR (512)
      ,@ROWNUMBER INT
      ,@LASTCHANGED DATETIME
      ,@NOTESFILEID INT
      ,@NOTESRECID INT 
      ,@LINENUMBER NUMERIC (28, 12)
      ,@TXT  NVARCHAR (512)
      ,@DATE_   DATETIME 
      ,@USERID  INT   
    )
AS

INSERT INTO NOTES (DATASET
      ,ROWNUMBER
      ,LASTCHANGED
      ,NOTESFILEID
      ,NOTESRECID
      ,LINENUMBER
      ,TXT
      ,DATE_
      ,USERID)
values (@DATASET,@ROWNUMBER,@LASTCHANGED,@NOTESFILEID, (select ISP_EFAVORITLINE.ROWNUMBER where ISP_EFAVORITLINE.DATASET=(@DATASET)) ,@LINENUMBER ,@TXT,@DATE_,@USERID)
    RETURN

一切对我来说都很好,但是这条线

(select ISP_EFAVORITLINE.ROWNUMBER where ISP_EFAVORITLINE.DATASET=(@DATASET))

抛出错误

消息 4104,级别 16,状态 1,过程 kt_insernotes,第 26 行
无法绑定多部分标识符“ISP_EFAVORITLINE.DATASET”。
消息 4104,级别 16,状态 1,过程 kt_insernotes,第 26 行
无法绑定多部分标识符“ISP_EFAVORITLINE.ROWNUMBER”。

谁能告诉我出了什么问题?

4

2 回答 2

3

您缺少一个FROM子句:

(select ISP_EFAVORITLINE.ROWNUMBER from ISP_EFAVORITLINE where ISP_EFAVORITLINE.DATASET=(@DATASET))

系统看到一个表名或别名,但它不知道它要绑定到什么。它可能只是假设您的意思是具有该名称的表,但 SQL 并不倾向于以假设的方式做太多事情。如果你想使用一个表,你最好把它放在一个FROM子句中。

于 2013-02-07T06:53:50.477 回答
0

是的,我们可以在 value 子句中选择查询:

ALTER PROCEDURE [dbo].[kt_insernotes]
              (@DATASET  NVARCHAR (512)
              ,@ROWNUMBER INT
              ,@LASTCHANGED DATETIME
              ,@NOTESFILEID INT
              ,@NOTESRECID INT 
              ,@LINENUMBER NUMERIC (28, 12)
              ,@TXT  NVARCHAR (512)
              ,@DATE_   DATETIME 
              ,@USERID  INT   
            )
AS

INSERT INTO NOTES (DATASET
                  ,ROWNUMBER
                  ,LASTCHANGED
                  ,NOTESFILEID
                  ,NOTESRECID
                  ,TXT
                  ,DATE_
                  ,USERID
                  ,LINENUMBER
                 )
select @DATASET,
       @ROWNUMBER,
       @LASTCHANGED,
       @NOTESFILEID,
       @LINENUMBER,
       @TXT,
       @DATE_,
       @USERID,
       ISP_EFAVORITLINE.ROWNUMBER 
from ISP_EFAVORITLINE
where ISP_EFAVORITLINE.DATASET=(@DATASET)

RETURN
于 2013-02-07T07:08:25.837 回答