2015-08-28 123 views
-2

我的問題是,需要使用存儲過程添加到我的表中的2個參數是來自2個其他表的值,我需要將這2個值更改爲適當的值。SQL Server存儲過程。插入表

我試圖尋找我有的問題,但沒有成功。

涉及3個表格:MovieAgeRestrictionPrice

Movie

  • MovieID,整型,PK
  • 電影,VARCHAR(50)
  • 持續時間,時間(0)
  • AgeRestrictionID,整型,FK - 與所述ID連接AgeRestriction表
  • PriceID,int,FK - 與價格表中的ID相關聯

AgeRestriction

  • AgeRestrictionID,INT,PK
  • AgeRestriction,詮釋

Price

  • PriceID,INT,PK
  • 價格,詮釋

我添加的2個值是AgeRestriction表中的值(AgeRestriction, int)和Price表中的(Price, int)。

這是我需要插入我得到的值Movies表中的值。

public void InsertMovie(Movie movie) 
{ 
     using (SqlConnection conn = CreateConnection()) 
     { 
      try 
      { 
       SqlCommand cmd = new SqlCommand("dbo.AddMovie", conn); 
       cmd.CommandType = CommandType.StoredProcedure; 

       cmd.Parameters.Add("@Movie", SqlDbType.NVarChar, 50).Value = movie._movie; 
       cmd.Parameters.Add("@Duration", SqlDbType.Time, 0).Value = movie.Duration; 
       cmd.Parameters.Add("@AgeRestriction", SqlDbType.Int, 50).Value = movie.AgeRestriction; 
       cmd.Parameters.Add("@Price", SqlDbType.Decimal, 50).Value = movie.Price; 

       conn.Open(); 
       cmd.ExecuteNonQuery(); 
      } 
      catch 
      { 
       throw new ApplicationException("An error occured in the data access layer."); 
      } 
     } 
    } 

所以,我試圖創建一個存儲過程,可以做到這一切,但至今沒有成功,所以我要問你們這裏..

+3

非常不清楚 - 存儲過程是否已經存在?如果是,當它從Mgmt Studio運行時,它是否可以自行工作?或者您是否需要編寫該存儲過程的幫助?或者你有問題*調用存儲過程從C#?請**澄清!** –

+0

這些表中是否有任何標識列? –

+0

我試圖自己創建一個存儲過程,但需要幫助才能創建一個可以工作的存儲過程。我正在使用Visual Stuido 2013.是的,MovieRes,AgeRestriction表中的AgeRestrictionID和Price表中的PriceID是標識列。我需要幫助創建一個存儲過程 – peppe11

回答

0

歐凱,這是香港專業教育學院嘗試:

ALTER PROCEDURE [dbo].[AddMovie] 
@Movie varchar(50), 
@Duration time(0), 
@AgeRestrictionID int, 
@PriceID int, 
@AgeRestriction int, 
@Price int 
AS 
BEGIN 

SET NOCOUNT ON; 

BEGIN TRANSACTION 
     INSERT INTO Movie (Movie, Duration, AgeRestrictionID, PriceID) 
     VALUES (@Movie, @Duration, @AgeRestrictionID, @PriceID) 
     SELECT Movie, Duration, AgeRestriction, Price 
     FROM Movie AS M 
     INNER JOIN AgeRestriction as Ag ON M.AgeRestrictionID = Ag.AgeRestrictionID 
     INNER JOIN Price as P ON M.PriceID = P.PriceID 

COMMIT 
END