用vb调用SQL server存储过程时能不能中途停止?

解决方案 »

  1.   

    在存储过程中根据错误返回错误号
    可以进行相应的操作CREATE PROCEDURE cx_hdfp @bh_name char(10),@hd char(6)
    AS
    begin tran
    declare @dqbh char(12),@zzbh char(12),@sfsy char(1),@a_str char(12),@a char(12),@aa_str char(12) SELECT @dqbh=dqbh,@zzbh=zzbh,@sfsy=sfsy FROM hdfp  
    WHERE bh_name=@bh_name and hd = @hd select @dqbh=substring(@dqbh,4,12) If @sfsy = "0" 
    select '-1'
    If @dqbh >= @zzbh
    select '-2'
    select @a_str = substring(ltrim(str(convert(numeric(18),'1'+@dqbh)+1)), 2,12)
    select @aa_str='AAA' + @a_str UPDATE hdfp  SET dqbh = @aa_str WHERE rtrim(bh_name) = @bh_name
    and RTRIM(hd) = @hd
    commit tran
    select @aa_str在程序中
    if ss="-1" then
       exit sub
    else
       
    end if
      

  2.   

    '*****我写了一个通用的存储过程。只要传一个SQL语句的字符串即可*****
    '*****字符串大小可以是0到几百k,再大的我没有试过,理论上是无限大的*****
    '*****字符串中不能有单引号出现,如果要有单引号应在前加上转义符,即'在字符串里应为''CREATE PROCEDURE up_ModifyDB
    @UpdateSql  NTEXT,
    @Status       INTEGER = 1 OUTPUT --返回值 0:成功 1:失败
    AS
    --变量定义
    Declare @Trans        nvarchar(25)
    SET NOCOUNT ON--定义事务名
    SET @Trans="transModify1"BEGIN TRANSACTION @Trans
    --运行
    EXECUTE sp_executesql @UpdateSqlIF @@ERROR = 0
    BEGIN
    COMMIT TRANSACTION @Trans;
    SET @Status = 0 ;-- 成功
    END ELSE
    BEGIN 
    ROLLBACK TRANSACTION @Trans;
    SET @Status = 1; --失败
    ENDSET NOCOUNT OFF
    RETURN @StatusGO
      

  3.   

    如果存储过程执行的时间太长了,就让数据库管理员将它Kill了