- 爱易网页
-
MSSQL教程
- 100分。存储过程的有关问题 ,请
日期: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 '