2015-02-11 49 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