2013-08-30 46 views
1

想創建這樣一個存儲過程創建存儲過程:收到錯誤嘗試使用類型表

CREATE PROCEDURE Students 
    @List StudentList READONLY,  
    @AdmissionId VARCHAR(max) 
AS 
BEGIN 
    INSERT INTO RcordsTable (StudentId, RollNumber, AdmissionId) 
    VALUES(@List.StudentId, @List.RollNumber, @AdmissionId) 
END 

哪裏List是輸入已在數據庫中已經有3列StudentListRollNumberId創造價值表。

當我嘗試創建SQL Server 2008中這個過程中,我得到以下錯誤:

Must declare the scalar variable @List

回答

2

你在T-SQL工作 - 不是在C#在這裏!該@List參數需要像對待一個T-SQL表變量 - 不喜歡一個C#對象....

所以你需要使用T-SQL語句的風格 - 像SELECT從表值參數@List - 不C#式「點表示法」(如訪問.NET對象的字段時):

CREATE PROCEDURE Students 
    @List StudentList READONLY,  
    @AdmissionId VARCHAR(max) 
AS 
BEGIN 
    INSERT INTO RcordsTable (StudentId, RollNumber, AdmissionId) 
     SELECT 
      StudentId, RollNumber, @AdmissionId 
     FROM @List 
END 

邊注:爲什麼一個AdmissionId定義爲Varchar(max)類型?? Id聽起來數字我 - >使用合適的數值類型。如果它不是數字 - 那麼你應該定義和使用合理的長度VARCHAR - 不只是得到過於懶惰,使用VARCHAR(MAX)的一切 - 這是不是一個好主意!

閱讀有關該主題的更多詳細信息,這個優秀的文章:What's the Point of Using VARCHAR(n) Anymore?

相關問題