哪位熟悉存储过程的大哥帮看一下这个存储过程

hzdzd 2003-09-23 03:34:28
在SQL Server2000的查询分析器中执行该语句时,会有四个错误提示。哪位大哥能帮我修正一下,谢谢!(因为整个语句太长,所以切分成两部分,待会在回复中发后半部分):
create procedure p_get_reciept @app_type_code char(3), @flow_num integer, @step_no smallint,@tache_code char(3),@app_no varchar(20), @post_or_name varchar(8) output
as
declare @gowhere_exp varchar(255)
declare @exp_col_value_str varchar(30)
declare @place_mark smallint
declare @exp_result integer
declare @relation_flag char(1)

select @relation_flag=RELATION from APP_FLOW_SET where APP_TYPE_CODE=@app_type_code and FLOW_NUM=@flow_num and STEP_NO=@step_no

if(@relation_flag<>'O')
begin
declare cur_get_cond cursor for
select CONDITION,PERSON from APP_FLOW_DIV_CON where TACHE_CODE=@tache_code and ((APP_TYPE_CODE='000' and FLOW_NUM=0 and STEP_NO=0) or (APP_TYPE_CODE=@app_type_code and FLOW_NUM=@flow_num and STEP_NO=@step_no)) order by APP_TYPE_CODE,CON_NO
end

if(@relation_flag='O')
begin
declare cur_get_cond cursor for
select CONDITION,PERSON from APP_FLOW_DIV_CON where TACHE_CODE=@tache_code and APP_TYPE_CODE=@app_type_code and FLOW_NUM=@flow_num and STEP_NO=@step_no
end
open cur_get_cond
fetch cur_get_cond into @gowhere_exp,@post_or_name


while (@@sqlstatus=0)
begin

select @place_mark=charindex('APP_BASE_INFO.APP_TYPE_CODE',@gowhere_exp)
if (@place_mark<>0)
begin
select exp_col_value_str=null
select @exp_col_value_str=APP_BASE_INFO.APP_TYPE_CODE from APP_BASE_INFO where APP_BASE_INFO.APP_NO=@app_no
select @gowhere_exp=stuff(@gowhere_exp,@place_mark,datalength('APP_BASE_INFO.APP_TYPE_CODE'),'^'+@exp_col_value_str+'^')
select @place_mark=charindex('APP_BASE_INFO.APP_TYPE_CODE',@gowhere_exp)
while (@place_mark<>0)
begin
select @gowhere_exp=stuff(@gowhere_exp,@place_mark,datalength('APP_BASE_INFO.APP_TYPE_CODE'),'^'+@exp_col_value_str+'^')
select @place_mark=charindex('APP_BASE_INFO.APP_TYPE_CODE',@gowhere_exp)
end
end


select @place_mark=charindex('APP_BASE_INFO.CHARGE_MODE',@gowhere_exp)
if (@place_mark<>0)
begin
select exp_col_value_str=null
select @exp_col_value_str=APP_BASE_INFO.CHARGE_MODE from APP_BASE_INFO where APP_BASE_INFO.APP_NO=@app_no
select @gowhere_exp=stuff(@gowhere_exp,@place_mark,datalength('APP_BASE_INFO.CHARGE_MODE'),'^'+@exp_col_value_str+'^')
select @place_mark=charindex('APP_BASE_INFO.CHARGE_MODE',@gowhere_exp)
while (@place_mark<>0)
begin
select @gowhere_exp=stuff(@gowhere_exp,@place_mark,datalength('APP_BASE_INFO.CHARGE_MODE'),'^'+@exp_col_value_str+'^')
select @place_mark=charindex('APP_BASE_INFO.CHARGE_MODE',@gowhere_exp)
end
end


select @place_mark=charindex('APP_BASE_INFO.VOLT_LEVEL_CODE',@gowhere_exp)
if (@place_mark<>0)
begin
select exp_col_value_str=null
select @exp_col_value_str=str(APP_BASE_INFO.VOLT_LEVEL_CODE) from APP_BASE_INFO where APP_BASE_INFO.APP_NO=@app_no
select @gowhere_exp=stuff(@gowhere_exp,@place_mark,datalength('APP_BASE_INFO.VOLT_LEVEL_CODE'),@exp_col_value_str)
select @place_mark=charindex('APP_BASE_INFO.VOLT_LEVEL_CODE',@gowhere_exp)
while (@place_mark<>0)
begin
select @gowhere_exp=stuff(@gowhere_exp,@place_mark,datalength('APP_BASE_INFO.VOLT_LEVEL_CODE'),@exp_col_value_str)
select @place_mark=charindex('APP_BASE_INFO.VOLT_LEVEL_CODE',@gowhere_exp)
end
end


select @place_mark=charindex('APP_BASE_INFO.BUSINESS_PLACE_CODE',@gowhere_exp)
if (@place_mark<>0)
begin
select exp_col_value_str=null
select @exp_col_value_str=APP_BASE_INFO.BUSINESS_PLACE_CODE from APP_BASE_INFO where APP_BASE_INFO.APP_NO=@app_no
select @gowhere_exp=stuff(@gowhere_exp,@place_mark,datalength('APP_BASE_INFO.BUSINESS_PLACE_CODE'),'^'+@exp_col_value_str+'^')
select @place_mark=charindex('APP_BASE_INFO.BUSINESS_PLACE_CODE',@gowhere_exp)
while (@place_mark<>0)
begin
select @gowhere_exp=stuff(@gowhere_exp,@place_mark,datalength('APP_BASE_INFO.BUSINESS_PLACE_CODE'),'^'+@exp_col_value_str+'^')
select @place_mark=charindex('APP_BASE_INFO.BUSINESS_PLACE_CODE',@gowhere_exp)
end
end


select @place_mark=charindex('APP_BASE_INFO.ELEC_TYPE_CODE',@gowhere_exp)
if (@place_mark<>0)
begin
select exp_col_value_str=null
select @exp_col_value_str=APP_BASE_INFO.ELEC_TYPE_CODE from APP_BASE_INFO where APP_BASE_INFO.APP_NO=@app_no
select @gowhere_exp=stuff(@gowhere_exp,@place_mark,datalength('APP_BASE_INFO.ELEC_TYPE_CODE'),'^'+@exp_col_value_str+'^')
select @place_mark=charindex('APP_BASE_INFO.ELEC_TYPE_CODE',@gowhere_exp)
while (@place_mark<>0)
begin
select @gowhere_exp=stuff(@gowhere_exp,@place_mark,datalength('APP_BASE_INFO.ELEC_TYPE_CODE'),'^'+@exp_col_value_str+'^')
select @place_mark=charindex('APP_BASE_INFO.ELEC_TYPE_CODE',@gowhere_exp)
end
end


select @place_mark=charindex('APP_BASE_INFO.APP_NEW_ADD_CAP',@gowhere_exp)
if (@place_mark<>0)
begin
select exp_col_value_str=null
select @exp_col_value_str=str(APP_BASE_INFO.APP_NEW_ADD_CAP) from APP_BASE_INFO where APP_BASE_INFO.APP_NO=@app_no
select @gowhere_exp=stuff(@gowhere_exp,@place_mark,datalength('APP_BASE_INFO.APP_NEW_ADD_CAP'),@exp_col_value_str)
select @place_mark=charindex('APP_BASE_INFO.APP_NEW_ADD_CAP',@gowhere_exp)
while (@place_mark<>0)
begin
select @gowhere_exp=stuff(@gowhere_exp,@place_mark,datalength('APP_BASE_INFO.APP_NEW_ADD_CAP'),@exp_col_value_str)
select @place_mark=charindex('APP_BASE_INFO.APP_NEW_ADD_CAP',@gowhere_exp)
end
end


select @place_mark=charindex('APP_BASE_INFO.IS_DF_BUILD',@gowhere_exp)
if (@place_mark<>0)
begin
select exp_col_value_str=null
select @exp_col_value_str=APP_BASE_INFO.IS_DF_BUILD from APP_BASE_INFO where APP_BASE_INFO.APP_NO=@app_no
select @gowhere_exp=stuff(@gowhere_exp,@place_mark,datalength('APP_BASE_INFO.IS_DF_BUILD'),'^'+@exp_col_value_str+'^')
select @place_mark=charindex('APP_BASE_INFO.IS_DF_BUILD',@gowhere_exp)
while (@place_mark<>0)
begin
select @gowhere_exp=stuff(@gowhere_exp,@place_mark,datalength('APP_BASE_INFO.IS_DF_BUILD'),'^'+@exp_col_value_str+'^')
select @place_mark=charindex('APP_BASE_INFO.IS_DF_BUILD',@gowhere_exp)
end
end


select @place_mark=charindex('APP_BASE_INFO.POWER_TYPE_CODE',@gowhere_exp)
if (@place_mark<>0)
begin
select exp_col_value_str=null
select @exp_col_value_str=APP_BASE_INFO.POWER_TYPE_CODE from APP_BASE_INFO where APP_BASE_INFO.APP_NO=@app_no
select @gowhere_exp=stuff(@gowhere_exp,@place_mark,datalength('APP_BASE_INFO.POWER_TYPE_CODE'),'^'+@exp_col_value_str+'^')
select @place_mark=charindex('APP_BASE_INFO.POWER_TYPE_CODE',@gowhere_exp)
while (@place_mark<>0)
begin
select @gowhere_exp=stuff(@gowhere_exp,@place_mark,datalength('APP_BASE_INFO.POWER_TYPE_CODE'),'^'+@exp_col_value_str+'^')
select @place_mark=charindex('APP_BASE_INFO.POWER_TYPE_CODE',@gowhere_exp)
end
end

select @place_mark=charindex('APP_BASE_INFO.MS_MODE',@gowhere_exp)
if (@place_mark<>0)
begin
select exp_col_value_str=null
select @exp_col_value_str=APP_BASE_INFO.MS_MODE from APP_BASE_INFO where APP_BASE_INFO.APP_NO=@app_no
select @gowhere_exp=stuff(@gowhere_exp,@place_mark,datalength('APP_BASE_INFO.MS_MODE'),'^'+@exp_col_value_str+'^')
select @place_mark=charindex('APP_BASE_INFO.MS_MODE',@gowhere_exp)
while (@place_mark<>0)
begin
select @gowhere_exp=stuff(@gowhere_exp,@place_mark,datalength('APP_BASE_INFO.MS_MODE'),'^'+@exp_col_value_str+'^')
select @place_mark=charindex('APP_BASE_INFO.MS_MODE',@gowhere_exp)
end
end
-----------------------------------------------------------以上是前半部分
...全文
35 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
liujiaqiang 2003-09-24
  • 打赏
  • 举报
回复
首先把 @@sqlstatus 写成 @@FETCH_STATUS , sqlsever中是没有@@sqlstatus 全局变量的。
deallocate cursor cur_get_cond 改成 deallocate cur_get_cond
deallocate cursor cur_get_cond 改成 deallocate cur_get_cond
deallocate cursor cur_get_cond 改成 deallocate cur_get_cond
可以了,你试试
祝你成功!!!!
yzyh 2003-09-24
  • 打赏
  • 举报
回复
帮你up
hzdzd 2003-09-23
  • 打赏
  • 举报
回复
求救!!!!!!... ...
hzdzd 2003-09-23
  • 打赏
  • 举报
回复
在SQL Server中只要能够通得过分析查询就行,不一定要通得过执行查询。求求各位帮忙!
hzdzd 2003-09-23
  • 打赏
  • 举报
回复
在网页上浏览确实让人头晕,所以强烈建议您拷到SQL Server中执行。
TTLOVEYOU3344 2003-09-23
  • 打赏
  • 举报
回复
太长了,头晕,不如先讲讲你要这个存储过程做什么,还有把所有出错的提示写下来~
hzdzd 2003-09-23
  • 打赏
  • 举报
回复
请各位帮帮忙,整个代码看起来是很长,但放到SQL Server中一执行情况就变得很简单了,因为这个存储过程是从Sybase数据库导过来的,在Sybase里没有什么问题。如果大家对SQL Server的存储过程熟悉,请帮看看!在线等候!
hzdzd 2003-09-23
  • 打赏
  • 举报
回复
各位最好不要在网页上检查这个存储过程,这样会眼花的,只要将它们拷到SQL Server查询分析器中合并然后执行,问题就一目了然了,麻烦各位!
hzdzd 2003-09-23
  • 打赏
  • 举报
回复
谢谢飞雪,但是问题的关键好象不在这,就算将@@sqlstatus改成 @sqlstatus'也会提示错误。大家可以将三部分的语句拷到SQL Server查询分析器中合并,然后执行,哪位大哥帮修改得后可以将整个存储过程发到我的E_mail中:dayzhang@tom.com ,不胜感激!问题一解决立刻给分!
糊了的咖啡豆 2003-09-23
  • 打赏
  • 举报
回复
@@sqlstatus 拼写错误 改成 @sqlstatus'
hzdzd 2003-09-23
  • 打赏
  • 举报
回复
语句是长了一点,不过将三部分的语句拷到SQL Server的查询分析器中合并并执行即可。执行后会有两个错误提示:1、必须声明变量 '@@sqlstatus'。2、在关键字 'cursor' 附近有语法错误。
麻烦各位大哥帮看一下,先谢了。
hzdzd 2003-09-23
  • 打赏
  • 举报
回复
----------------------------------------------------以下是第三部分
select @place_mark=charindex('APP_BASE_INFO.USER_TYPE7',@gowhere_exp)
if (@place_mark<>0)
begin
select exp_col_value_str=null
select @exp_col_value_str= str(APP_BASE_INFO.USER_TYPE7) from APP_BASE_INFO where APP_BASE_INFO.APP_NO=@app_no
select @gowhere_exp=stuff(@gowhere_exp,@place_mark,datalength('APP_BASE_INFO.USER_TYPE7'),'^'+@exp_col_value_str+'^')
select @place_mark=charindex('APP_BASE_INFO.USER_TYPE7',@gowhere_exp)
while (@place_mark<>0)
begin
select @gowhere_exp=stuff(@gowhere_exp,@place_mark,datalength('APP_BASE_INFO.USER_TYPE7'),'^'+@exp_col_value_str+'^')
select @place_mark=charindex('APP_BASE_INFO.USER_TYPE7',@gowhere_exp)
end
end

select @place_mark=charindex('APP_BASE_INFO.USER_TYPE8',@gowhere_exp)
if (@place_mark<>0)
begin
select exp_col_value_str=null
select @exp_col_value_str= str(APP_BASE_INFO.USER_TYPE8) from APP_BASE_INFO where APP_BASE_INFO.APP_NO=@app_no
select @gowhere_exp=stuff(@gowhere_exp,@place_mark,datalength('APP_BASE_INFO.USER_TYPE8'),'^'+@exp_col_value_str+'^')
select @place_mark=charindex('APP_BASE_INFO.USER_TYPE8',@gowhere_exp)
while (@place_mark<>0)
begin
select @gowhere_exp=stuff(@gowhere_exp,@place_mark,datalength('APP_BASE_INFO.USER_TYPE8'),'^'+@exp_col_value_str+'^')
select @place_mark=charindex('APP_BASE_INFO.USER_TYPE8',@gowhere_exp)
end
end

select @place_mark=charindex('APP_BASE_INFO.USER_TYPE9',@gowhere_exp)
if (@place_mark<>0)
begin
select exp_col_value_str=null
select @exp_col_value_str= str(APP_BASE_INFO.USER_TYPE9) from APP_BASE_INFO where APP_BASE_INFO.APP_NO=@app_no
select @gowhere_exp=stuff(@gowhere_exp,@place_mark,datalength('APP_BASE_INFO.USER_TYPE9'),'^'+@exp_col_value_str+'^')
select @place_mark=charindex('APP_BASE_INFO.USER_TYPE9',@gowhere_exp)
while (@place_mark<>0)
begin
select @gowhere_exp=stuff(@gowhere_exp,@place_mark,datalength('APP_BASE_INFO.USER_TYPE9'),'^'+@exp_col_value_str+'^')
select @place_mark=charindex('APP_BASE_INFO.USER_TYPE9',@gowhere_exp)
end
end

select @place_mark=charindex('APP_BASE_INFO.USER_TYPE10',@gowhere_exp)
if (@place_mark<>0)
begin
select exp_col_value_str=null
select @exp_col_value_str= str(APP_BASE_INFO.USER_TYPE10) from APP_BASE_INFO where APP_BASE_INFO.APP_NO=@app_no
select @gowhere_exp=stuff(@gowhere_exp,@place_mark,datalength('APP_BASE_INFO.USER_TYPE10'),'^'+@exp_col_value_str+'^')
select @place_mark=charindex('APP_BASE_INFO.USER_TYPE10',@gowhere_exp)
while (@place_mark<>0)
begin
select @gowhere_exp=stuff(@gowhere_exp,@place_mark,datalength('APP_BASE_INFO.USER_TYPE10'),'^'+@exp_col_value_str+'^')
select @place_mark=charindex('APP_BASE_INFO.USER_TYPE10',@gowhere_exp)
end
end


select @place_mark=charindex('APP_BASE_INFO.ALL_CAPACITY',@gowhere_exp)
if (@place_mark<>0)
begin
select exp_col_value_str=null
select @exp_col_value_str= str(APP_BASE_INFO.ALL_CAPACITY) from APP_BASE_INFO where APP_BASE_INFO.APP_NO=@app_no
select @gowhere_exp=stuff(@gowhere_exp,@place_mark,datalength('APP_BASE_INFO.ALL_CAPACITY'),'^'+@exp_col_value_str+'^')
select @place_mark=charindex('APP_BASE_INFO.ALL_CAPACITY',@gowhere_exp)
while (@place_mark<>0)
begin
select @gowhere_exp=stuff(@gowhere_exp,@place_mark,datalength('APP_BASE_INFO.ALL_CAPACITY'),'^'+@exp_col_value_str+'^')
select @place_mark=charindex('APP_BASE_INFO.ALL_CAPACITY',@gowhere_exp)
end
end


exec p_get_value_exp @gowhere_exp,@exp_result output
if(@exp_result=-1)
begin
select @post_or_name=null
close cur_get_cond
deallocate cursor cur_get_cond
return -1
end
else if(@exp_result=1)
begin
close cur_get_cond
deallocate cursor cur_get_cond
return 1
end
else if(@exp_result=0)
select @post_or_name=null
else
select @post_or_name=null

fetch cur_get_cond into @gowhere_exp,@post_or_name
end

close cur_get_cond
deallocate cursor cur_get_cond
return 0

go

hzdzd 2003-09-23
  • 打赏
  • 举报
回复
---------------------------------------------------------下面是第二部分
select @place_mark=charindex('APP_BASE_INFO.USER_TYPE1',@gowhere_exp)
if (@place_mark<>0)
begin
select exp_col_value_str=null
select @exp_col_value_str=str(APP_BASE_INFO.USER_TYPE1) from APP_BASE_INFO where APP_BASE_INFO.APP_NO=@app_no
select @gowhere_exp=stuff(@gowhere_exp,@place_mark,datalength('APP_BASE_INFO.USER_TYPE1'),'^'+@exp_col_value_str+'^')
select @place_mark=charindex('APP_BASE_INFO.USER_TYPE1',@gowhere_exp)
while (@place_mark<>0)
begin
select @gowhere_exp=stuff(@gowhere_exp,@place_mark,datalength('APP_BASE_INFO.USER_TYPE1'),'^'+@exp_col_value_str+'^')
select @place_mark=charindex('APP_BASE_INFO.USER_TYPE1',@gowhere_exp)
end
end

select @place_mark=charindex('APP_BASE_INFO.USER_TYPE2',@gowhere_exp)
if (@place_mark<>0)
begin
select exp_col_value_str=null
select @exp_col_value_str= str(APP_BASE_INFO.USER_TYPE2) from APP_BASE_INFO where APP_BASE_INFO.APP_NO=@app_no
select @gowhere_exp=stuff(@gowhere_exp,@place_mark,datalength('APP_BASE_INFO.USER_TYPE2'),'^'+@exp_col_value_str+'^')
select @place_mark=charindex('APP_BASE_INFO.USER_TYPE2',@gowhere_exp)
while (@place_mark<>0)
begin
select @gowhere_exp=stuff(@gowhere_exp,@place_mark,datalength('APP_BASE_INFO.USER_TYPE2'),'^'+@exp_col_value_str+'^')
select @place_mark=charindex('APP_BASE_INFO.USER_TYPE2',@gowhere_exp)
end
end

select @place_mark=charindex('APP_BASE_INFO.USER_TYPE3',@gowhere_exp)
if (@place_mark<>0)
begin
select exp_col_value_str=null
select @exp_col_value_str= str(APP_BASE_INFO.USER_TYPE3) from APP_BASE_INFO where APP_BASE_INFO.APP_NO=@app_no
select @gowhere_exp=stuff(@gowhere_exp,@place_mark,datalength('APP_BASE_INFO.USER_TYPE3'),'^'+@exp_col_value_str+'^')
select @place_mark=charindex('APP_BASE_INFO.USER_TYPE3',@gowhere_exp)
while (@place_mark<>0)
begin
select @gowhere_exp=stuff(@gowhere_exp,@place_mark,datalength('APP_BASE_INFO.USER_TYPE3'),'^'+@exp_col_value_str+'^')
select @place_mark=charindex('APP_BASE_INFO.USER_TYPE3',@gowhere_exp)
end
end

select @place_mark=charindex('APP_BASE_INFO.USER_TYPE4',@gowhere_exp)
if (@place_mark<>0)
begin
select exp_col_value_str=null
select @exp_col_value_str= str(APP_BASE_INFO.USER_TYPE4) from APP_BASE_INFO where APP_BASE_INFO.APP_NO=@app_no
select @gowhere_exp=stuff(@gowhere_exp,@place_mark,datalength('APP_BASE_INFO.USER_TYPE4'),'^'+@exp_col_value_str+'^')
select @place_mark=charindex('APP_BASE_INFO.USER_TYPE4',@gowhere_exp)
while (@place_mark<>0)
begin
select @gowhere_exp=stuff(@gowhere_exp,@place_mark,datalength('APP_BASE_INFO.USER_TYPE4'),'^'+@exp_col_value_str+'^')
select @place_mark=charindex('APP_BASE_INFO.USER_TYPE4',@gowhere_exp)
end

select @place_mark=charindex('APP_BASE_INFO.USER_TYPE5',@gowhere_exp)
if (@place_mark<>0)
begin
select exp_col_value_str=null
select @exp_col_value_str= str(APP_BASE_INFO.USER_TYPE5) from APP_BASE_INFO where APP_BASE_INFO.APP_NO=@app_no
select @gowhere_exp=stuff(@gowhere_exp,@place_mark,datalength('APP_BASE_INFO.USER_TYPE5'),'^'+@exp_col_value_str+'^')
select @place_mark=charindex('APP_BASE_INFO.USER_TYPE5',@gowhere_exp)
while (@place_mark<>0)
begin
select @gowhere_exp=stuff(@gowhere_exp,@place_mark,datalength('APP_BASE_INFO.USER_TYPE5'),'^'+@exp_col_value_str+'^')
select @place_mark=charindex('APP_BASE_INFO.USER_TYPE5',@gowhere_exp)
end
end

select @place_mark=charindex('APP_BASE_INFO.USER_TYPE6',@gowhere_exp)
if (@place_mark<>0)
begin
select exp_col_value_str=null
select @exp_col_value_str= str(APP_BASE_INFO.USER_TYPE6) from APP_BASE_INFO where APP_BASE_INFO.APP_NO=@app_no
select @gowhere_exp=stuff(@gowhere_exp,@place_mark,datalength('APP_BASE_INFO.USER_TYPE6'),'^'+@exp_col_value_str+'^')
select @place_mark=charindex('APP_BASE_INFO.USER_TYPE6',@gowhere_exp)
while (@place_mark<>0)
begin
select @gowhere_exp=stuff(@gowhere_exp,@place_mark,datalength('APP_BASE_INFO.USER_TYPE6'),'^'+@exp_col_value_str+'^')
select @place_mark=charindex('APP_BASE_INFO.USER_TYPE6',@gowhere_exp)
end
end

1,108

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧