2017-11-24 6 views
2

私はこのストアドプロシージャに関するSQLでこの割り当てをしていますが、私は質問を理解するのに苦労しています。だから私は解決策を考え出すことができません。SQLストアドプロシージャ

は、ここで質問です:(8マーク)

  1. ストアドプロシージャを書くJobNumberServiceCode、Notesと時間を受け入れると、次のタスクを実行しますAddJobServiceと呼ばれます。ジョブレコードがない場合は、JobNumberメッセージが表示されます。

    b。関連するジョブレコードがある場合は、JobServiceレコード

    cを追加します。ジョブ・テーブル内の適切な列に

    を調整します。これは、私がこれまでにやっていることです。

    create procedure AddJobService (@JobNumber int = null, @ServiceCode varchar(15) = null, @Notes varchar(200) = null, @Hours int = null) 
    as 
    if @JobNumber is null 
         Begin 
         RaisError ('Please provide information', 16,1) 
         End 
    else 
         if not exists(Select * from Job where JobNumber = @JobNumber) 
         Begin 
         RaisError (' Job Record Do not Exists ', 16,1) 
         End 
    
    else 
         begin 
         Begin Transaction 
         insert into JobService(ServiceCode, Notes, Hours) 
         Values (@ServiceCode, @Notes, @Hours) 
         if @@ERROR <> 0 
           Begin 
           RaisError('Job Service Failed',16,1) 
           Rollback Transaction 
           End 
         End 
    

    を、私はこのエラー私は実際には 『C』の部分を行うことはできません 「
    を取得しています?私は "テーブルに 'LAB3.dbo.JobService' 'ExtCost'列に値NULLを挿入できません。列はNULLを許可しません。 INSERTは失敗します。ステートメントが終了しました。」

+0

これまでスキーマと一緒に達成したことを教えてください – zarruq

+0

こんにちは、私が今までに持っているものを投稿しました – Grace

+0

あなたはどんな誤りを抱えていますか? – zarruq

答えて

0

をあなたがあなたの答えでExtCostを表示する必要はありませんが、あなたがテーブルJobServiceにレコードを挿入するときしかし、あなたがExtCostに入れるために必要とされている。

することができます場合はJobServiceテーブル・スキームを変更し、ちょうどあなたがExtCostのために価値を提供する必要がある他、nullableExtCostを変更、おそらく '0'

insert into JobService(ServiceCode, Notes, Hours, ExtCost) 
     Values (@ServiceCode, @Notes, @Hours, 0) 
0
CREATE PROCEDURE AddJobService 
-- declaring input parameters 
@JobNumber INT, @ServiceCode INT, @Notes VARCHAR (50), @Hours INT 
AS 
BEGIN 

-- if null replace with empty space 
SET @JobNumber = ISNULL (@JobNumber, 0) 
SET @ServiceCode = ISNULL (@ServiceCode, 0) 
SET @Notes = ISNULL (@Notes, '') 
SET @Hours = ISNULL (@Hours, 0) 


IF NOT EXISTS (SELECT 1 FROM Jobs WHERE JobNumber = @Jobnumber) 
    --no record 
    BEGIN 
     RAISEERROR ('No information for that job number!',16,1); 
    END 
ELSE 
    -- record 
    BEGIN 
     INSERT INTO Jobs (JobNumber, ServiceCode, Notes, [Hours]) 
     VALUES (@JobNumber, @ServiceCode, @Notes, @Hours) 
    END 
END GO 
+0

ありがとう! RAISEERRORの "thart"はどうですか? :)) – Stipe

関連する問題