老兄我用的sql server2000是在pb调用

解决方案 »

  1.   

    不论是什么语句,都最好是使用存储过程因为存储过程的执行速度相对比较SQL语句来讲应该是存储过程快一些这是上课时老师讲的,没经过验证,HOHO
      

  2.   

    我也搞不懂看了网上资料我才把我的查询语句改成存储了以前是直接用sql查询现在改成存储了昨天更讨厌的还出现了死锁一次
      

  3.   

    你的存储过程没问题的至于用不用存储过程,仁者见仁,智者见智
    我觉得综合考虑,存储过程中最好是多条sql语句
    当然了,如果一条也可以,只要你愿意
      

  4.   

    刚看了一下锁的问题:
    select 操作只会有共享锁
    如果SQL SERVER对一个资源使用了共享锁,即使第一个事务还没有完成,第二个事务也可以获得共享锁.
    也就是说select 不可能会造成死锁
      

  5.   

    按说没道理的,这么简单一句也会造成死锁?估计是其它地方的问题!或者你在调用过程前将
    sqlca.autocommit = true执行完成后,设回来
    sqlca.autocommit = false
    试试吧
      

  6.   

    谢谢大家有这么多人帮助我的程序是多用户操作这个存储是在好些地方使用,昨天我发现当第一个人操作时第二个跟着操作两个人就像死机一样差不一分钟左右才恍个神来,我以前直接用sql语句从来没出现过的
    我的连接语句sqlca.autocommit = false
    declare pr_yjhj procedure for dt_yjhj :h_b.bah_1;
    execute pr_yjhj;
    con_1=sqlca.sqlcode
    if con_1<>0 then
    messagebox("数据库连接失败","不能连到SQL SERVER里"+"错误信息为:"+sqlca.sqlerrtext+"请稍后重试")
       return
    end if
    fetch pr_yjhj into :h_b.yj_1;
    close pr_yjhj;
    上面是存储的调用确实我现在真的很迷茫要不要把我的存储改过来并且我的查询表只用10多万条记录查询时感觉光标要打转几秒.谢谢大家指点
      

  7.   

    如果将autocommit设置为on呢
    或者每一个语句后都要加 事务提交的语句
      

  8.   

    如果将autocommit设置为on呢
    或者每一个语句后都要加 事务提交的语句
      

  9.   

    to zheninchangjiang(john shu)
    //////////////////////////
    如果将autocommit设置为on呢
    或者每一个语句后都要加 事务提交的语句
    ////////////////////
    我有点不懂你的意思能详解吗
      

  10.   

    CREATE PROCEDURE dt_cyup
    @cy_bah varchar(9),
    @cy_cwh varchar(10),
    @cy_ksmc varchar(10),
    @cy_czy varchar(10),
    @cy_yj  money,
    @cy_return int output,
    @cy_err  varchar(20) output
    as
    DECLARE @er_h int
    SET @er_h=0
    begin tran t1
      update cw set sy='1' where cwh=@cy_cwh and ksmc=@cy_ksmc
      SET @er_h=@@error
      if @er_h<>0
      begin 
         rollback tran t1
         SET @cy_return= 1
         SET @cy_err= "在进行床位更新时出错"  
         return
      end
      update brk set 当前状态="3",出院日期=getdate(),出院办理员=@cy_czy  where 住院号=@cy_bah;
      SET @er_h=@@error
      if @er_h<>0
       begin   
       rollback tran t1
       SET @cy_return = 1
       SET @cy_err= "在进行病人停息表更新时出错" 
       return
     end
     if @cy_yj<>0 
        begin
        insert into yj(住院号,押金金额,操作员,押金说明) values(@cy_bah,@cy_yj,@cy_czy,'出院预交');
        SET @er_h=@@error
      if @er_h<>0
         begin
         rollback tran t1
         set @cy_return = 1 
         set @cy_err="在进行押金更新时出错"
         return
      end 
    end  
    commit tran t1
    SET @cy_return= 0
    GO
    这是我多表提交的存储没有出现错误感觉学是慢不知怎么的.