sqlserver 子存储过程嵌套的解决方案

1.前言。
    sqlserver2005的存储过程,在完整的单独过程中嵌套用游标是没问题的,但是,如果主存储过程有游标,子存储过程再定义游标将不能正确执行。 怎么解决这个问题呢? oracle可以用select into 等loop循环取代游标,sqlserver也有类似功能,但sqlserver这个功能不完善,只能进行结果集的数量判断,不能有游标功能。不过这用在子存储过程的查询,已经足够了。这个方法,就是用这个方式去写:
  select @a=[column1] from table1
  if(@@rowcount>0)
  begin
  end;
其中@a你需要预先定义,columen1是你的表table1的字段名称
2.总结
  (1)注意select @a=[column1] from table1后面不要有分号,否则你的if永远进不去。rowcount只是瞬时的。
  (2)用sqlserver写存储过程特别憋屈,没办法,忍吧。谁叫比oracle便宜3-6倍呢。

猜你喜欢

转载自nannan408.iteye.com/blog/1910627