SQL存储过程的问题?????急呀!!!!!!(!)
我写了一个存储过程,语法检验没问题,可是调用他就是不执行操作。我单步调试他,每一句都能执行 可是没效果。
可我把它中的语句考到查询分析器中,却执行得没问题。
如果数据库时刚启动的 第一次调成功,以后在调用没有返回任何错误信息,但没有实际操作。
这种情况大家谁遇到过,帮帮忙呀!
这是我的存储过程:
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