两个存储过程:一、使用存储过程动态创建数据表。二、插入新记录。

时间:2022-12-09 05:57:07

最近发现使用Sql的存储过程,可以大大减少程序的代码量。

以后要考虑多多使用存储过程了。

两个小技巧:

一、使用存储过程动态创建数据表。

/*
过程功能:存储过程动态创建数据表
注意事项:连接Sql语句的“单引号”
创建日期:2006-09-01
创建人:SkyJacker
Blog:Http://blog.csdn.net/skyjacker
*/
CREATE PROCEDURE  [dbo].[CreateTable]
@TableName varchar(255)
AS
 begin
 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].['+@TableName+']') and

OBJECTPROPERTY(id, N'IsUserTable') = 1)
  exec('drop table  '+@TableName);

exec('
CREATE TABLE [dbo].['+@TableName+'] (
 [ID] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
 [Name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]   ')
 end;
GO

执行 exec  CreateTable 'TabHello'


二、插入新记录。
/*
过程功能:
   插入新记录
   如果已存在则不插入
   不存在则插入
注意事项:应该有更好的方法
创建日期:2006-09-01
创建人:SkyJacker
Blog:Http://blog.csdn.net/skyjacker
*/
CREATE PROCEDURE   LyrTypeTable
@MapLayer Varchar(255),
@Type varChar(255),
@DrawTool varchar(255)
as
begin
  declare @RecordNum  integer
  set @RecordNum=0
  select top 1  MapLayer  from TabTest  where MapLayer = @MapLayer
 
  set  @RecordNum=@@rowcount
  if (@RecordNum=0) 
         insert into  TabTest(MapLayer,Type,DrawTool) values(@MapLayer,@Type,@DrawTool)
end;
GO