2015-08-28 100 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