SQL存储过程的问题?????急呀!!!!!!(!)

flyingZFX 2004-04-24 02:39:53
我写了一个存储过程,语法检验没问题,可是调用他就是不执行操作。我单步调试他,每一句都能执行 可是没效果。
可我把它中的语句考到查询分析器中,却执行得没问题。
如果数据库时刚启动的 第一次调成功,以后在调用没有返回任何错误信息,但没有实际操作。

这种情况大家谁遇到过,帮帮忙呀!

这是我的存储过程:
CREATE PROCEDURE [PreTreatmentTreeTable] ---------2004/04/22,zyc
@userID varchar(50), /* user's gh */
@DbName varchar(50), /*databasename*/
@tableName varchar(50), /*tablename*/
@NodeName varchar(100), /*myName*/
@codeFieldName varchar(100), /*myCode*/
@separatorFlag varchar(50) /*eg.\ or / or (} and or so*/
AS


declare
@newTableName varchar(150)
,@strSQL nvarchar(4000)
,@return_status int

if len(@userID)=0 or len(@DbName)=0 or len(@tableName)=0 or len(@NodeName)=0 or len(@codeFieldName)=0 or len(@separatorFlag)=0
begin
raiserror(15405, -1, -1, '参数非法。')
return (1)
end


select @strSQL = 'IF NOT EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'''+ @DbName +''')
begin
raiserror(15405, -1, -1, ''不存在指定的数据库'')
end'
EXECUTE @return_status = sp_executesql @strSQL
if @return_status = 1
begin
raiserror(60000, -1, -1, '查找指定的数据库时失败。')
return (1)
end


select @strSQL = 'IF NOT EXISTS (SELECT name FROM ' +@DbName + '.dbo.sysobjects WHERE name = N'''+ @tableName +''' and type =''U'' )
begin
raiserror(15405, -1, -1, ''不存在指定的数据表:'' )
end'
EXECUTE @return_status = sp_executesql @strSQL
if @return_status = 1
begin
raiserror(60000, -1, -1, '查找指定的数据库时失败。')
return (1)
end


IF NOT EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'maintepcuseryw')
CREATE DATABASE [maintepcuseryw]

select @newTableName = @DbName + '_' + @tableName +'_'+@userID /*'maintepcuseryw'*/

select @strSQL = 'IF EXISTS (SELECT name FROM maintepcuseryw.dbo.sysobjects WHERE name = N'''+ @newTableName +''' and type =''U'' and xtype =''U'' )
begin
DROP table maintepcuseryw..' +@newTableName +'
end'
EXECUTE @return_status = sp_executesql @strSQL
if @return_status = 1
begin
raiserror(60000, -1, -1,'删除同名的数据库时失败。')
return (1)
end


select @strSQL = 'select '+@NodeName +','+ @codeFieldName +','+ @codeFieldName +' as '+ @codeFieldName + '_Flg into maintepcuseryw..'+ @newTableName +' from '+ @DbName + '..' + @tableName
EXECUTE @return_status = sp_executesql @strSQL
if @return_status = 1
begin
raiserror(60000, -1, -1, '生成指定的数据库时失败。')
return (1)
end


select @strSQL = 'update maintepcuseryw..'+@newTableName+' set '+@codeFieldName+'_Flg = REVERSE(
SUBSTRING(
REVERSE('+@codeFieldName+')
, CHARINDEX(REVERSE('''+@separatorFlag+'''),REVERSE('+@codeFieldName+'))+len('''+@separatorFlag+''')
,len('+@codeFieldName+')-CHARINDEX(REVERSE('''+@separatorFlag+'''),REVERSE('+@codeFieldName+'))-len('''+@separatorFlag+''')+1
)
) where CHARINDEX('''+@separatorFlag+''','+@codeFieldName+')>0'

EXECUTE @return_status = sp_executesql @strSQL
if @return_status = 1
begin
raiserror(60000, -1, -1, '处理指定的数据时失败。')
return (1)
end


select @strSQL = 'update maintepcuseryw..'+@newTableName+' set '+@codeFieldName+'_Flg = '''' where CHARINDEX('''+@separatorFlag+''','+@codeFieldName+')=0'
EXECUTE @return_status = sp_executesql @strSQL
if @return_status = 1
begin
raiserror(60000, -1, -1, '处理指定的数据时失败。')
return (1)
end


return (0)
GO
...全文
44 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
dofly 2004-04-28
  • 打赏
  • 举报
回复
你要實現什么功能都沒有說呀,似懂非懂的
wancl 2004-04-28
  • 打赏
  • 举报
回复
对不起。怎么这么长呀。而且看起来好费劲,真是不好意思,只好给你增加一点人气了。
flyingZFX 2004-04-26
  • 打赏
  • 举报
回复
up
flyingZFX 2004-04-25
  • 打赏
  • 举报
回复
谢谢楼上的老兄,帮顶,

还有没有人会呀?
ukyoxh 2004-04-24
  • 打赏
  • 举报
回复
太长了,没有精力啊


帮你顶一下!!

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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