日期:2014-05-18  浏览次数:20637 次

100分。存储过程的问题 ,请高手进
想写一个存储过程,内容是现有一个存储过程假如叫SP_tool,该存储过程接受一个参数,如果传入参数叫TA,那么执行一个查找操作,在当前数据库中查找有没有名字叫TA的表,如果有   就自动建立一个存储过程对该表进行插入工作。如果没有这个名称的表就显示无此表。我朋友以前发过帖子,有人回复了,但是不是很懂   ,请解释下,最好每行都说下。最好的   我给90分,谢谢大家   帮帮忙!!!!!!!
sql   语句如下:


create   proc   dbo.SP_tool  
          @tablename   varchar(50)
AS
  if   exists(select   1   from   sysobjects   where   name=@tablename   and   xtype= 'u ')
      begin
          exec   AutoGeneration_IUD_P   @tablename, '1 '     --插入
          exec   AutoGeneration_IUD_P   @tablename, '2 '     --更新
          exec   AutoGeneration_IUD_P   @tablename, '3 '     --刪除
      end

GO


/*附通用存儲過程   AutoGeneration_IUD_P   */

/*   作者:   zlp321002(行走江湖,万事低调可保一路平安)   */

Alter     PROC     [dbo].[AutoGeneration_IUD_P]
@TABLENAME   VARCHAR(50),
@FLAT     TINYINT
AS
BEGIN
set   @TABLENAME=ltrim(rtrim(@TABLENAME))
  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(2)+
  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 '