2011-03-23 71 views
1

我想運行這個命令,它會追加80行..但我得到。sql插入值多部分標識符無法綁定

Msg 4104,Level 16,State 1,Line 1 無法綁定多部分標識符「Frame.Guid」。

INSERT INTO studentrecords(recordGuid, studentGuid, courseGuid, licenseGuid, repeatflag, frameGuid, coredata, framescore, timeinframe, locked, daterefreshed, dateinserted) 
VALUES  (NEWID(), '25d6e1d9-e5ce-42dd-bd6a-5956ec7cb047', '54dffd58-1af9-44cf-982e-ea0e8930878e', '00000000-1111-1111-0000-000000000000', 0, Frame.Guid, '<flags><flag1>1</flag1> <flag2>1</flag2> <flag3>1</flag3> <flag4>1</flag4> <flag5>1</flag5><flag6>1</flag6></flags><StudentAnswer> <CorrectionHistory></CorrectionHistory> </StudentAnswer>', 0, 55860, 1, GETDATE(), GETDATE()) 
Select Frame.Guid FROM Frame 
WHERE (Frame.Course = '54dffd58-1af9-44cf-982e-ea0e8930878e') AND (Frame.Template <> '7d3a3b40-86e3-43f4-a4ca-039afdd0b7a3') 

回答

1

我不能看你怎麼想這裏的「插入」和「選擇」查詢有關 - 他們都是語法完整,但不以任何方式聯繫在一起的。您希望第一個查詢中的「Frame.Guid」以某種方式來自第二個查詢,但我無法完全理解。無論如何,這就是錯誤信息所說的全部。它完全不能說明Frame.Guid的含義。

+0

我看到我的錯誤; – phoenixAZ 2011-03-23 01:54:51

1

您在insert語句中引用Frame.Guid,但沒有定義。我懷疑你想要將該值選擇到一個變量中,然後在插入語句中使用該變量。

DECLARE @frameGUID GUID 

SET @frameGUID = (Select Frame.Guid FROM Frame 
WHERE (Frame.Course = '54dffd58-1af9-44cf-982e-ea0e8930878e') 
    AND (Frame.Template <> '7d3a3b40-86e3-43f4-a4ca-039afdd0b7a3')) 

INSERT INTO studentrecords(recordGuid, studentGuid, courseGuid, licenseGuid, repeatflag, frameGuid, coredata, framescore, timeinframe, locked, daterefreshed, dateinserted) 
VALUES (
    NEWID(), 
    '25d6e1d9-e5ce-42dd-bd6a-5956ec7cb047', 
    '54dffd58-1af9-44cf-982e-ea0e8930878e', 
    '00000000-1111-1111-0000-000000000000', 
    0, 
    @frameGUID, 
    '<flags><flag1>1</flag1> <flag2>1</flag2> <flag3>1</flag3> <flag4>1</flag4> <flag5>1</flag5><flag6>1</flag6></flags><StudentAnswer> <CorrectionHistory></CorrectionHistory> </StudentAnswer>', 
    0, 
    55860, 
    1, 
    GETDATE(), 
    GETDATE()) 
0

你有兩個陳述。 INSERT聲明無法知道您希望SELECT聲明中的字段Frame.Guid

您需要將其重構爲一個語句。您可以將所有常量放入SELECT語句(在SELECTFROM之間)並刪除VALUES子句。那麼這將是一個聲明。

2
INSERT INTO studentrecords (
          recordGuid, studentGuid, courseGuid, licenseGuid, 
          repeatflag, frameGuid, coredata, 
          framescore, timeinframe, locked, 
          daterefreshed, dateinserted 
          ) 
    SELECT NEWID(), 
      '25d6e1d9-e5ce-42dd-bd6a-5956ec7cb047', 
      '54dffd58-1af9-44cf-982e-ea0e8930878e', 
      '00000000-1111-1111-0000-000000000000', 
      0, Frame.Guid, '1 1 1 1 11 ', 0, 55860, 1, 
      GETDATE(), GETDATE() 
    FROM Frame 
    WHERE Frame.Course = '54dffd58-1af9-44cf-982e-ea0e8930878e' 
      AND Frame.Template <> '7d3a3b40-86e3-43f4-a4ca-039afdd0b7a3'; 
相關問題