CREATE PROCEDURE DeleteData
@blnError int output,
@TableName char(255),
@TableIDName char(255),
@TableID int
 AS
declare @strSQL varchar(6000) -- 主语句
set @strSQL = 'Delete from ['
set @strSQL =@strSQL+@TableName
set @strSQL =@strSQL+'] where ['
set @strSQL = @strSQL+@TableIDName
set @strSQL = @strSQL+'] = '
set @strSQL = @strSQL+@TableID
exec (@strSQL)
GO我单步执行了一下存储过程,发现在在set @strSQL =@strSQL+'] where ['这个地方就出问题了,where加不上去.

解决方案 »

  1.   

    --定义类型错了,改为如下Create PROCEDURE DeleteData
    @blnError    int output,
    @TableName   varchar(255),
    @TableIDName varchar(255),
    @TableID     varchar(255)
     AS
    .........
    go
      

  2.   

    显示的问题,实际上是可以加上的,做一点修改:
    ------------------------------------------------------------------------------------CREATE PROCEDURE DeleteData
    @blnError int output,
    @TableName   varchar(255),   --用varchar
    @TableIDName varchar(255),   --同上
    @TableID int
     AS
    declare @strSQL varchar(8000) -- 主语句
    set @strSQL = 'Delete from ['
    set @strSQL =@strSQL+@TableName
    set @strSQL =@strSQL+'] where ['
    set @strSQL = @strSQL+@TableIDName
    set @strSQL = @strSQL+'] = '
    set @strSQL = @strSQL+@TableID
    exec (@strSQL)
    GO
      

  3.   

    CREATE PROCEDURE DeleteData
    @blnError int output,
    @TableName   varchar(255),   --用varchar
    @TableIDName varchar(255),   --同上
    @TableID int
     AS
    declare @strSQL varchar(8000) -- 主语句
    set @strSQL = 'Delete from ['
    set @strSQL =@strSQL+@TableName
    set @strSQL =@strSQL+'] where ['
    set @strSQL = @strSQL+@TableIDName
    set @strSQL = @strSQL+'] = '
    set @strSQL = @strSQL+rtrim(@TableID)
    exec (@strSQL)
    GO
      

  4.   

    是啊,用char的話,會以空格補足255長度的,還是用varchar好,
    另外,實際上是加上去了,只是顯示問題吧.
    SQL Query Analyzer--Tools--options--Results/ Maximum characters per column 默認256,改成2000好了
      

  5.   

    我写了一个插入、更新、删除的通用存储过程。你可以参考下:--临时存储过程如下:CREATE PROC #AutoGeneration_IUD_P
    @TABLENAME VARCHAR(50),
    @FLAT  TINYINT
    AS
    BEGIN
     DECLARE @HOST_NAME VARCHAR(200)
     DECLARE @GET_DATE DATETIME
     SELECT @HOST_NAME=HOST_NAME(),@GET_DATE=GETDATE()
     IF @FLAT=1 --插入
     BEGIN
     DECLARE @INSERT_SQLROC NVARCHAR(4000)
     DECLARE @INSERT_SQL VARCHAR(8000)
     DECLARE @INSERT_PARAMETER VARCHAR(8000)
     DECLARE @INSERT_DESCRIPTION VARCHAR(8000)
     DECLARE @INSERT_REMARK VARCHAR(2000)
     DECLARE @INSERT_COLUMN VARCHAR(8000)
     SELECT @INSERT_SQLROC='',@INSERT_SQL='',@INSERT_PARAMETER='',@INSERT_DESCRIPTION='',
       @INSERT_REMARK='',@INSERT_COLUMN=''
     SET @INSERT_SQLROC=@INSERT_SQLROC+'IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE ID=OBJECT_ID(''SP_'+@TABLENAME+'_AddNew'') AND XTYPE IN (N''P''))'+CHAR(10)
     SET @INSERT_SQLROC=@INSERT_SQLROC+SPACE(5)+'DROP PROC SP_'+@TABLENAME+'_AddNew'+CHAR(10)
     SET @INSERT_SQLROC=@INSERT_SQLROC+'GO '
     SELECT @INSERT_PARAMETER=@INSERT_PARAMETER+SPACE(4)+'@'+LTRIM(NAME)+SPACE(15-LEN(NAME))+
         CASE WHEN xtype=34 THEN 'image'
           WHEN xtype=35 THEN 'text'
           WHEN xtype=36 THEN 'uniqueidentifier'
           WHEN xtype=48 THEN 'tinyint'
           WHEN xtype=52 THEN 'smallint'
           WHEN xtype=56 THEN 'int'
           WHEN xtype=58 THEN 'smalldatetime'
           WHEN xtype=59 THEN 'real'
           WHEN xtype=60 THEN 'money'
           WHEN xtype=61 THEN 'datetime'
           WHEN xtype=62 THEN 'float'
           WHEN xtype=98 THEN 'sql_variant'
           WHEN xtype=99 THEN 'ntext'
           WHEN xtype=104 THEN 'bit'
           WHEN xtype=106 THEN 'decimal'
           WHEN xtype=108 THEN 'numeric'
           WHEN xtype=122 THEN 'smallmoney'
           WHEN xtype=127 THEN 'bigint'
           WHEN xtype=165 THEN 'varbinary'
              WHEN xtype=167 THEN 'varchar'+'('+LTRIM(length)+')'
           WHEN xtype=173 THEN 'binary'
           WHEN xtype=175 THEN 'char'+'('+LTRIM(length)+')'
           WHEN xtype=189 THEN 'timestamp'
           WHEN xtype=231 THEN 'nvarchar'+'('+LTRIM(length)+')'
           WHEN xtype=239 THEN 'nchar'+'('+LTRIM(length)+')'
           WHEN xtype=241 THEN 'xml'
           WHEN xtype=231 THEN 'sysname' END+','+CHAR(10),
       @INSERT_REMARK=@INSERT_REMARK+',@'+NAME,
       @INSERT_COLUMN=@INSERT_COLUMN+','+NAME
     FROM
      ( 
      SELECT NAME,CDEFAULT,A.ID,XTYPE,LENGTH,COLORDER
      FROM SYSCOLUMNS A 
      WHERE A.ID=OBJECT_ID(''+@TABLENAME+'')
      AND COLUMNPROPERTY(A.ID,A.NAME,'IsIdentity')<>1 
      )TB
     ORDER BY COLORDER
     SET @INSERT_DESCRIPTION=@INSERT_DESCRIPTION+'/*+--------------------------------------+'+CHAR(10)
     SET @INSERT_DESCRIPTION=@INSERT_DESCRIPTION+'| 过程名称:SP_'+@TABLENAME+'_AddNew'+CHAR(10)
     SET @INSERT_DESCRIPTION=@INSERT_DESCRIPTION+'| 功能说明:插入表'+@TABLENAME+'的存储过程'+CHAR(10)
     SET @INSERT_DESCRIPTION=@INSERT_DESCRIPTION+'| 入口参数:'+STUFF(@INSERT_REMARK,1,1,'')+''+CHAR(10)
     SET @INSERT_DESCRIPTION=@INSERT_DESCRIPTION+'| 过程返回:无返回记录'+CHAR(10)
     SET @INSERT_DESCRIPTION=@INSERT_DESCRIPTION+'| 维护记录:Y/A'+CHAR(10)
     SET @INSERT_DESCRIPTION=@INSERT_DESCRIPTION+'| 使用案例:SP_'+@TABLENAME+'_AddNew'+CHAR(10)
     SET @INSERT_DESCRIPTION=@INSERT_DESCRIPTION+'| 工作站名:'+@HOST_NAME+''+CHAR(10)
     SET @INSERT_DESCRIPTION=@INSERT_DESCRIPTION+'| 联系方式:[email protected]'+CHAR(10)
     SET @INSERT_DESCRIPTION=@INSERT_DESCRIPTION+'| 创建日期:'+CONVERT(VARCHAR(20),@GET_DATE,120)+''+CHAR(10) 
     SET @INSERT_DESCRIPTION=@INSERT_DESCRIPTION+'+--------------------------------------+*/'+CHAR(10)
     SELECT @INSERT_SQLROC=@INSERT_SQLROC+CHAR(10)+@INSERT_DESCRIPTION+'CREATE PROC SP_'+@TABLENAME+'_AddNew'
     SET @INSERT_SQLROC=@INSERT_SQLROC+CHAR(13)+CHAR(10)+LEFT(@INSERT_PARAMETER,LEN(@INSERT_PARAMETER)-2)+CHAR(10)
     SET @INSERT_SQLROC=@INSERT_SQLROC+'AS'+CHAR(10)+'BEGIN'
     SET @INSERT_SQLROC=@INSERT_SQLROC+CHAR(10)+SPACE(4)+'SET NOCOUNT ON'
     SET @INSERT_SQL=SPACE(8)+'INSERT INTO '+@TABLENAME+'('+STUFF(@INSERT_COLUMN,1,1,'')+')'+CHAR(13)+CHAR(10)+SPACE(8)+' SELECT '+STUFF(@INSERT_REMARK,1,1,'')
     SET @INSERT_SQLROC=@INSERT_SQLROC+CHAR(10)+CHAR(32)+@INSERT_SQL
     SET @INSERT_SQLROC=@INSERT_SQLROC+CHAR(10)+SPACE(8)+' SELECT _ROWCOUNT=@@ROWCOUNT'
     SET @INSERT_SQLROC=@INSERT_SQLROC+CHAR(10)+SPACE(4)+'SET NOCOUNT OFF' 
     SET @INSERT_SQLROC=@INSERT_SQLROC+CHAR(10)+'END'
     PRINT @INSERT_SQLROC+CHAR(10)+'GO '
     --EXEC(@INSERT_SQLROC)
     --EXEC SP_EXECUTESQL @INSERT_SQLROC
     END
      

  6.   

    IF @FLAT=2 --修改
     BEGIN
     DECLARE @UPDATE_SQLROC VARCHAR(8000)
     DECLARE @UPDATE_SQL VARCHAR(8000) 
     DECLARE @UPDATE_PARAMETER VARCHAR(1000)
     DECLARE @UPDATE_DESCRIPTION VARCHAR(1000)
     DECLARE @UPDATE_REMARK VARCHAR(1000)
     DECLARE @UPDATE_KEY_COLUMN VARCHAR(1000)
     DECLARE @UPDATE_COLUMN VARCHAR(5000)
     SELECT  @UPDATE_SQLROC='',
       @UPDATE_SQL='',@UPDATE_PARAMETER='',@UPDATE_DESCRIPTION='',
       @UPDATE_REMARK='',@UPDATE_KEY_COLUMN='',@UPDATE_COLUMN=''
     SET @UPDATE_SQLROC=@UPDATE_SQLROC+'IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE ID=OBJECT_ID(''SP_'+@TABLENAME+'_Update'') AND XTYPE IN (N''P''))'+CHAR(10)
     SET @UPDATE_SQLROC=@UPDATE_SQLROC+SPACE(5)+'DROP PROC SP_'+@TABLENAME+'_Update'+CHAR(10)
     SET @UPDATE_SQLROC=@UPDATE_SQLROC+' GO '
     SELECT @UPDATE_PARAMETER=@UPDATE_PARAMETER+SPACE(4)+'@'+LTRIM(NAME)+SPACE(15-LEN(NAME))+
         CASE WHEN xtype=34 THEN 'image'
           WHEN xtype=35 THEN 'text'
           WHEN xtype=36 THEN 'uniqueidentifier'
           WHEN xtype=48 THEN 'tinyint'
           WHEN xtype=52 THEN 'smallint'
           WHEN xtype=56 THEN 'int'
           WHEN xtype=58 THEN 'smalldatetime'
           WHEN xtype=59 THEN 'real'
           WHEN xtype=60 THEN 'money'
           WHEN xtype=61 THEN 'datetime'
           WHEN xtype=62 THEN 'float'
           WHEN xtype=98 THEN 'sql_variant'
           WHEN xtype=99 THEN 'ntext'
           WHEN xtype=104 THEN 'bit'
           WHEN xtype=106 THEN 'decimal'
           WHEN xtype=108 THEN 'numeric'
           WHEN xtype=122 THEN 'smallmoney'
           WHEN xtype=127 THEN 'bigint'
           WHEN xtype=165 THEN 'varbinary'
              WHEN xtype=167 THEN 'varchar'+'('+LTRIM(length)+')'
           WHEN xtype=173 THEN 'binary'
           WHEN xtype=175 THEN 'char'+'('+LTRIM(length)+')'
           WHEN xtype=189 THEN 'timestamp'
           WHEN xtype=231 THEN 'nvarchar'+'('+LTRIM(length)+')'
           WHEN xtype=239 THEN 'nchar'+'('+LTRIM(length)+')'
           WHEN xtype=241 THEN 'xml'
           WHEN xtype=231 THEN 'sysname' END+','+CHAR(10)
     FROM SYSCOLUMNS A
        WHERE ID=OBJECT_ID(''+@TABLENAME+'')
     SET NOCOUNT ON
     CREATE TABLE #(TABLE_QUALIFIER VARCHAR(100),
     TABLE_OWNER  VARCHAR(100),
     TABLE_NAME   VARCHAR(100),
     COLUMN_NAME  VARCHAR(100),
     KEY_SEQ      VARCHAR(50),
     PK_NAME   VARCHAR(100))
     INSERT INTO # EXEC SP_PKEYS @TABLENAME
     SELECT @UPDATE_REMARK=@UPDATE_REMARK+','+COLUMN_NAME+'=@'+COLUMN_NAME
     FROM #
     SELECT @UPDATE_KEY_COLUMN=@UPDATE_KEY_COLUMN+','+NAME+'=@'+NAME
     FROM SYSCOLUMNS A
        WHERE ID=OBJECT_ID(''+@TABLENAME+'')
     AND NAME NOT IN (SELECT COLUMN_NAME FROM #)
     DROP TABLE #
     SET NOCOUNT OFF
      IF DATALENGTH(@UPDATE_PARAMETER)>0
      BEGIN
       SET @UPDATE_PARAMETER=LEFT(@UPDATE_PARAMETER,LEN(@UPDATE_PARAMETER)-2)
       SET @UPDATE_DESCRIPTION=@UPDATE_DESCRIPTION+'/*+--------------------------------------+'+CHAR(10)
       SET @UPDATE_DESCRIPTION=@UPDATE_DESCRIPTION+'| 过程名称:SP_'+@TABLENAME+'_Update'+CHAR(10)
       SET @UPDATE_DESCRIPTION=@UPDATE_DESCRIPTION+'| 功能说明:更新表'+@TABLENAME+'的存储过程'+CHAR(10)
       SET @UPDATE_DESCRIPTION=@UPDATE_DESCRIPTION+'| 入口参数:'+STUFF(@UPDATE_REMARK,1,1,'')+''+CHAR(10)
       SET @UPDATE_DESCRIPTION=@UPDATE_DESCRIPTION+'| 过程返回:无返回记录'+CHAR(10)
       SET @UPDATE_DESCRIPTION=@UPDATE_DESCRIPTION+'| 维护记录:Y/A'+CHAR(10)
       SET @UPDATE_DESCRIPTION=@UPDATE_DESCRIPTION+'| 使用案例:SP_'+@TABLENAME+'_Update'+CHAR(10)
       SET @UPDATE_DESCRIPTION=@UPDATE_DESCRIPTION+'| 工作站名:'+@HOST_NAME+''+CHAR(10)
       SET @UPDATE_DESCRIPTION=@UPDATE_DESCRIPTION+'| 联系方式:[email protected]'+CHAR(10)
       SET @UPDATE_DESCRIPTION=@UPDATE_DESCRIPTION+'| 创建日期:'+CONVERT(VARCHAR(20),@GET_DATE,120)+''+CHAR(10) 
       SET @UPDATE_DESCRIPTION=@UPDATE_DESCRIPTION+'+--------------------------------------+*/'+CHAR(10)
       SELECT @UPDATE_SQLROC=@UPDATE_SQLROC+CHAR(10)+@UPDATE_DESCRIPTION+'CREATE PROC SP_'+@TABLENAME+'_Update'
       SET @UPDATE_SQLROC=@UPDATE_SQLROC+CHAR(13)+CHAR(10)+@UPDATE_PARAMETER+CHAR(10)
       SET @UPDATE_SQLROC=@UPDATE_SQLROC+'AS'+CHAR(10)+'BEGIN'
       SET @UPDATE_SQLROC=@UPDATE_SQLROC+CHAR(10)+SPACE(4)+'SET NOCOUNT ON'+CHAR(10)
       SET @UPDATE_SQL=SPACE(8)+'UPDATE '+@TABLENAME+CHAR(10)+SPACE(8)+'SET '
       SET @UPDATE_SQLROC=@UPDATE_SQLROC+@UPDATE_SQL+STUFF(@UPDATE_KEY_COLUMN,1,1,'')
       SET @UPDATE_SQLROC=@UPDATE_SQLROC+CHAR(10)+SPACE(8)+'FROM '+@TABLENAME+CHAR(10)+SPACE(8)+'WHERE '+STUFF(@UPDATE_REMARK,1,1,'')+''
       SET @UPDATE_SQLROC=@UPDATE_SQLROC+CHAR(10)+SPACE(8)+'SELECT _ROWCOUNT=@@ROWCOUNT'
       SET @UPDATE_SQLROC=@UPDATE_SQLROC+CHAR(10)+SPACE(4)+'SET NOCOUNT OFF'
       SET @UPDATE_SQLROC=@UPDATE_SQLROC+CHAR(10)+'END' 
       PRINT @UPDATE_SQLROC+CHAR(13)+CHAR(10)+'GO'
       --EXECUTE(@UPDATE_SQLROC+' GO ')
      END
     END
      

  7.   

    IF @FLAT=3 --删除
     BEGIN
     DECLARE @DELETE_SQLROC VARCHAR(8000)
     DECLARE @DELETE_SQL VARCHAR(8000) 
     DECLARE @DELETE_PARAMETER VARCHAR(1000)
     DECLARE @DELETE_DESCRIPTION VARCHAR(1000)
     DECLARE @DELETE_REMARK VARCHAR(1000)
     DECLARE @DELETE_KEY_COLUMN VARCHAR(1000)
     SELECT  @DELETE_SQLROC='',@DELETE_SQL='',@DELETE_PARAMETER='',@DELETE_DESCRIPTION='',
       @DELETE_REMARK='',@DELETE_KEY_COLUMN=''
     SET  @DELETE_SQLROC=@DELETE_SQLROC+'IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE ID=OBJECT_ID(''SP_'+@TABLENAME+'_Remove'') AND XTYPE IN (N''P''))'+CHAR(10)
     SET  @DELETE_SQLROC=@DELETE_SQLROC+SPACE(5)+'DROP PROC SP_'+@TABLENAME+'_Remove'+CHAR(10)
     SET  @DELETE_SQLROC=@DELETE_SQLROC+' GO '
     SET NOCOUNT ON
     CREATE TABLE #_#(TABLE_QUALIFIER VARCHAR(100),
     TABLE_OWNER  VARCHAR(100),
     TABLE_NAME   VARCHAR(100),
     COLUMN_NAME  VARCHAR(100),
     KEY_SEQ      VARCHAR(50),
     PK_NAME   VARCHAR(100))
     INSERT INTO #_# EXEC SP_PKEYS @TABLENAME
     SELECT @DELETE_KEY_COLUMN=@DELETE_KEY_COLUMN+','+COLUMN_NAME+'=@'+COLUMN_NAME,
       @DELETE_REMARK=@DELETE_REMARK+',@'+COLUMN_NAME
     FROM #_#
     SELECT @DELETE_PARAMETER=@DELETE_PARAMETER+SPACE(4)+'@'+LTRIM(NAME)+SPACE(15-LEN(NAME))+
         CASE WHEN xtype=34 THEN 'image'
           WHEN xtype=35 THEN 'text'
           WHEN xtype=36 THEN 'uniqueidentifier'
           WHEN xtype=48 THEN 'tinyint'
           WHEN xtype=52 THEN 'smallint'
           WHEN xtype=56 THEN 'int'
           WHEN xtype=58 THEN 'smalldatetime'
           WHEN xtype=59 THEN 'real'
           WHEN xtype=60 THEN 'money'
           WHEN xtype=61 THEN 'datetime'
           WHEN xtype=62 THEN 'float'
           WHEN xtype=98 THEN 'sql_variant'
           WHEN xtype=99 THEN 'ntext'
           WHEN xtype=104 THEN 'bit'
           WHEN xtype=106 THEN 'decimal'
           WHEN xtype=108 THEN 'numeric'
           WHEN xtype=122 THEN 'smallmoney'
           WHEN xtype=127 THEN 'bigint'
           WHEN xtype=165 THEN 'varbinary'
              WHEN xtype=167 THEN 'varchar'+'('+LTRIM(length)+')'
           WHEN xtype=173 THEN 'binary'
           WHEN xtype=175 THEN 'char'+'('+LTRIM(length)+')'
           WHEN xtype=189 THEN 'timestamp'
           WHEN xtype=231 THEN 'nvarchar'+'('+LTRIM(length)+')'
           WHEN xtype=239 THEN 'nchar'+'('+LTRIM(length)+')'
           WHEN xtype=241 THEN 'xml'
           WHEN xtype=231 THEN 'sysname' END+','+CHAR(10)
     FROM SYSCOLUMNS A
        WHERE ID=OBJECT_ID(''+@TABLENAME+'') 
     AND NAME IN (SELECT COLUMN_NAME FROM #_#)
     DROP TABLE #_#
     SET NOCOUNT OFF
      IF DATALENGTH(@DELETE_PARAMETER)>0
      BEGIN
       SET @DELETE_PARAMETER=LEFT(@DELETE_PARAMETER,LEN(@DELETE_PARAMETER)-2)
       SET @DELETE_DESCRIPTION=@DELETE_DESCRIPTION+'/*+--------------------------------------+'+CHAR(10)
       SET @DELETE_DESCRIPTION=@DELETE_DESCRIPTION+'| 过程名称:SP_'+@TABLENAME+'_Remove'+CHAR(10)
       SET @DELETE_DESCRIPTION=@DELETE_DESCRIPTION+'| 功能说明:删除表'+@TABLENAME+'的存储过程'+CHAR(10)
       SET @DELETE_DESCRIPTION=@DELETE_DESCRIPTION+'| 入口参数:'+STUFF(@DELETE_REMARK,1,1,'')+''+CHAR(10)
       SET @DELETE_DESCRIPTION=@DELETE_DESCRIPTION+'| 过程返回:无返回记录'+CHAR(10)
       SET @DELETE_DESCRIPTION=@DELETE_DESCRIPTION+'| 维护记录:Y/A'+CHAR(10)
       SET @DELETE_DESCRIPTION=@DELETE_DESCRIPTION+'| 使用案例:SP_'+@TABLENAME+'_Remove'+CHAR(10)
       SET @DELETE_DESCRIPTION=@DELETE_DESCRIPTION+'| 工作站名:'+@HOST_NAME+''+CHAR(10)
       SET @DELETE_DESCRIPTION=@DELETE_DESCRIPTION+'| 联系方式:[email protected]'+CHAR(10)
       SET @DELETE_DESCRIPTION=@DELETE_DESCRIPTION+'| 创建日期:'+CONVERT(VARCHAR(20),@GET_DATE,120)+''+CHAR(10) 
       SET @DELETE_DESCRIPTION=@DELETE_DESCRIPTION+'+--------------------------------------+*/'+CHAR(10)
       SELECT @DELETE_SQLROC=@DELETE_SQLROC+CHAR(10)+@DELETE_DESCRIPTION+'CREATE PROC SP_'+@TABLENAME+'_Remove'
       SET @DELETE_SQLROC=@DELETE_SQLROC+CHAR(13)+CHAR(10)+@DELETE_PARAMETER+CHAR(10)
       SET @DELETE_SQLROC=@DELETE_SQLROC+'AS'+CHAR(10)+'BEGIN'
       SET @DELETE_SQLROC=@DELETE_SQLROC+CHAR(10)+SPACE(4)+'SET NOCOUNT ON'
       SET @DELETE_SQL='DELETE '+@TABLENAME+CHAR(10)+SPACE(8)+'WHERE '
       SET @DELETE_SQLROC=@DELETE_SQLROC+CHAR(10)+SPACE(8)+@DELETE_SQL+STUFF(@DELETE_KEY_COLUMN,1,1,'')
       SET @DELETE_SQLROC=@DELETE_SQLROC+CHAR(10)+SPACE(8)+'SELECT _ROWCOUNT=@@ROWCOUNT'
       SET @DELETE_SQLROC=@DELETE_SQLROC+CHAR(10)+SPACE(4)+'SET NOCOUNT OFF'
       SET @DELETE_SQLROC=@DELETE_SQLROC+CHAR(10)+'END' 
       PRINT @DELETE_SQLROC+CHAR(13)+CHAR(10)+'GO'  
       --EXECUTE(@DELETE_SQLROC+' GO ') 
      END
     END
    ENDGOCREATE PROC #SP_Generation_IUD
    @TABLENAMES VARCHAR(8000)
    AS
    BEGIN
    DECLARE @I INT
    DECLARE @TABLENAME VARCHAR(100)
    SET @I=CHARINDEX(',',@TABLENAMES)
    WHILE @I>0
    BEGIN
     SET @TABLENAME=LEFT(@TABLENAMES,@I-1)
     EXEC #AutoGeneration_IUD_P @TABLENAME,1
     EXEC #AutoGeneration_IUD_P @TABLENAME,2
     EXEC #AutoGeneration_IUD_P @TABLENAME,3
     SET @TABLENAMES=RIGHT(@TABLENAMES,LEN(@TABLENAMES)-@I)
     SET @I=CHARINDEX(',',@TABLENAMES)
    END
    IF LEN(@TABLENAMES)>0
    BEGIN
     EXEC #AutoGeneration_IUD_P @TABLENAMES,1
     EXEC #AutoGeneration_IUD_P @TABLENAMES,2
     EXEC #AutoGeneration_IUD_P @TABLENAMES,3
    END
    ENDGO
      

  8.   

    --调用方法如下: exec  #SP_Generation_IUD '表1,表2,表3'--Example:exec  #SP_Generation_IUD 'ICR_PermittedUrl,ICR_ForbiddenUrl'
    GODROP PROC  #SP_Generation_IUD
    GODROP PROC #AutoGeneration_IUD_PGO
    --详细可以见(有输出结果显示效果)
    http://blog.csdn.net/zlp321002/archive/2006/08/12/1055089.aspx
      

  9.   

    你的问题没有那么复杂,char型不够默认的部分要用空格补足,所以用VARCHAR,下面的TABLEID如不想用varchar的话就用convert()转型就可以了