2015-02-11 48 views
0

我有一個存儲過程tst_student_sp其執行插入command.After是插入我需要在具有不同的存儲過程tst_user_sp已經在另一個表中插入相同的細節written.When我試圖打電話tst_user_sp,它不工作。存儲過程調用之間

ALTER PROCEDURE [dbo].[tst_student_sp] 
    @gid nvarchar(64)= null, 
    @student_firstname nvarchar(45) =null, 
    @student_lastname nvarchar(45) =null, 
    @dateof_birth datetime =null, 
    @dateof_join datetime =null, 
    @case_id integer =null, 
    @result int output 
AS 
    SET NOCOUNT ON; 
if @case_id=1 
    if @gid != '' 
     BEGIN 
      insert into tst_student(
      student_gid, 
      student_firstname, 
      student_lastname, 
      dob, 
      doj 
      )values(
      @gid, 
      @student_firstname, 
      @student_lastname, 
      @dateof_birth, 
      @dateof_join) 

      set @[email protected]@rowcount 
      if @result=1 
       BEGIN 
        EXEC dbo.tst_user_sp '4',@student_firstname,@student_lastname,'vcx102','s',2;     
       END 
     END 

第二存儲過程:

ALTER PROCEDURE [dbo].[tst_user_sp]  
    @user_gid nvarchar(64)=null, 
    @fname nvarchar(45)=null, 
    @lname nvarchar(45)=null, 
    @user_id nvarchar(64) = null, 
    @pwd nvarchar(64) = null, 
    @class_gid nvarchar(64)=null, 
    @case_id integer=null 
AS 
    SET NOCOUNT ON; 

IF @case_id=2 
BEGIN 
    INSERT INTO tst_user (user_gid,user_firstname,user_lastname,user_id,user_pwd,state) 
    values (@user_gid,@fname,@lname,@user_id,@pwd,'Active') 
    print @@rowcount 
END 

編碼的這部分不是executing.The表保持爲空。

set @[email protected]@rowcount 
if @result=1 
    BEGIN 
     EXEC dbo.tst_user_sp '4',@student_firstname,@student_lastname,'vcx102','s',2;     
    END 
+0

歡迎使用StackOverflow :)如果您需要某個問題的幫助,提供有關您期望的行爲類型以及所獲得的行爲的信息會非常有幫助。我認爲你的情況,你期望一行插入'tst_user',並沒有發生,沒有錯誤信息等 – Luaan 2015-02-11 07:10:43

回答

1

你錯過了一個參數,所以@case_id最終被nullnull不是2,所以沒有插入。

如果您的不指望它們工作,請勿使用默認參數值。限制越多,出現這種錯誤的可能性就越小。在所有參數中,它看起來並不像你期望的其中任何都會丟失。所以刪除這些默認值。

哦,而'whatever'varchar常數 - 對於nvarchar,您要使用N'whatever'。這裏沒有太大區別,但它可能會導致你錯過索引以及非本地字符:)

另外,請注意@@rowcount。例如,我不會使用它,除非你需要它(不是這種情況),並且很好地理解它是如何工作的 - 例如使用觸發器非常棘手。即使是簡單的set分配也會導致@@rowcount更改爲1。並且閱讀@@rowcount將重置爲0。小心:)

+0

感謝您的答案Luaan – 2015-02-11 07:09:54

+0

@SenthilKumarJ這個答案解決了您的問題?如果是,那麼請接受這個答案。 – 2015-02-11 07:19:25