如建立了个表是 WoolenDeliveDetail,更新表的
存储过程是UP_WoolenDeliveDetailCREATE PROCEDURE UP_WoolenDeliveDetail @INTUpdateID INT,--为-1 删除0 修改1新增 @INTDeDetailID INT, @INTDeID INT, @INTColorID INT, @NVD1 NVARCHAR(20), @NVD2 NVARCHAR(20), @NVD3 NVARCHAR(20), @NVD4 NVARCHAR(20), @NVD5 NVARCHAR(20), @NVD6 NVARCHAR(20), @NVD7 NVARCHAR(20), @NVD8 NVARCHAR(20), @NVD9 NVARCHAR(20), @NVD10 NVARCHAR(20) AS IF (@INTUpdateID=0) Begin UPDATE WoolenDeliveDetail SET DeID=@INTDeID,ColorID=@INTColorID, D1=@NVD1,D2=@NVD2,D3=@NVD3,D4=@NVD4,D5=@NVD5,D6=@NVD6, D7=@NVD7,D8=@NVD8,D9=@NVD9,D10=@NVD10 WHERE DeDetailID=@INTDeDetailID End ELSE IF (@INTUpdateID=1) Begin SET @INTDeDetailID=(Select ISNULL(MAX(DeDetailID),0) From WoolenDeliveDetail)+1--取新的ID INSERT INTO WoolenDeliveDetail (DeDetailID,DeID,ColorID, D1,D2,D3,D4,D5,D6,D7,D8,D9,D10 ) VALUES (@INTDeDetailID,@INTDeID,@INTColorID, @NVD1,@NVD2,@NVD3,@NVD4,@NVD5,@NVD6,@NVD7,@NVD8,@NVD9,@NVD10 ) End ELSE DELETE FROM WoolenDeliveDetail WHERE DeDetailID=@INTDeDetailID GO 其他的常规的
数据表更新存储过程与这存储过程结构差不多。有没有方法实现,新建一表后,执行一个通用的生成更新数据的存储过程,后生成该表的更新存储脚本?? 解决方法: 用下面这个自动生成表的更新数据的存储过程:CREATE PROCEDURE SP_CreateProcdure @TableName nvarchar(50) AS /* 功能: 自动生成表的更新数据的存储过程如:当建立表MyTable后,执行SP_CreateProcdure ,生成表MyTable的数据更新的存储过程UP_MyTable 设计: OK_008 时间: 2006-05 备注: 1、请在查询分析器上执行:EXEC SP_CreateProcdure TableName 2、由于生成的字符串长度合计很多时候存在>4000以上,所有只使用Print输出,再Copy即可。 3、该方法能生成一般表的更新数据的存储过程,其中更新格式可以根据实际情况修改。 */ DECLARE @strParameter nvarchar(3000) DECLARE @strInsert nvarchar(3000) DECLARE @strUpdate nvarchar(3000) DECLARE @strDelete nvarchar(500) DECLARE @strWhere nvarchar(100) DECLARE @strNewID nvarchar(100) DECLARE @SQL_CreateProc nvarchar(4000) SET @SQL_CreateProc='CREATE PROCEDURE UP_'+@TableName +char(13)+'@INTUpdateID int,'+' /* -1 删除 0 修改 1新增 */' SET @strParameter='' SET @strInsert='' SET @strUpdate='' SET @strWhere='' DECLARE @TName nvarchar(50),@TypeName nvarchar(50),@TypeLength nvarchar(50),@Colstat bit DECLARE Obj_Cursor CURSOR FOR SELECT * FROM FN_GetObjColInfo(@TableName) OPEN Obj_Cursor FETCH NEXT FROM Obj_Cursor INTO @TName,@TypeName,@TypeLength,@Colstat WHILE @@FETCH_STATUS=0 BEGIN --构造存储过程参数部分 SET @strParameter=@strParameter +CHAR(13)+'@'+ @TName +''+@TypeName+','--构造新增数据部分 IF @Colstat=0 SET @strInsert=@strInsert +'@'+ @TName +','--构造更新数据部分 IF (@strWhere='') BEGIN SET @strNewID='SET @'+@TName+'=(Select ISNULL(MAX('+@TName+'),0) From '+@TableName+')+1 --取新的ID' SET @strWhere=' WHERE '+@TName+'='+'@'+@TName END ELSE SET @strUpdate=@strUpdate+@TName+'='+'@'+@TName +','--构造删除数据部分 FETCH NEXT FROM Obj_Cursor INTO @TName,@TypeName,@TypeLength,@Colstat END CLOSE Obj_Cursor DEALLOCATE Obj_Cursor SET @strParameter=LEFT(@strParameter,LEN(@strParameter)-1) --去掉最右边的逗号 SET @strUpdate=LEFT(@strUpdate,LEN(@strUpdate)-1) SET @strInsert=LEFT(@strInsert,LEN(@strInsert)-1) --存储过程名、参数 PRINT @SQL_CreateProc+@strParameter +CHAR(13)+'AS'--修改PRINT 'IF (@INTUpdateID=0)' PRINT' BEGIN'+CHAR(13) PRINT CHAR(9)+'UPDATE '+@TableName+' SET '+@strUpdate+CHAR(13)+CHAR(9)+@strWhere PRINT ' END'--增加PRINT 'IF (@INTUpdateID=1)' PRINT ' BEGIN' PRINT CHAR(9)+@strNewID PRINT CHAR(9)+'INSERT INTO '+@TableName+' SELECT '+@strInsert PRINT ' END'--删除PRINT 'ELSE' PRINT ' BEGIN' PRINT CHAR(9)+'DELETE FROM '+@TableName +@strWhere PRINT ' END' PRINT 'GO' GO 其中有的自定义函数FN_GetObjColInfo,代码如下:/*功能:返回某一表的所有
字段、存储过程、函数的参数信息设计:OK_008 时间:2006-05*/ CREATE FUNCTION FN_GetObjColInfo (@ObjName varchar(50)) RETURNS @Return_Table TABLE( TName nvarchar(50), TypeName nvarchar(50), TypeLength nvarchar(50), Colstat Bit ) AS BEGIN INSERT @Return_Table select b.name as 字段名,c.name as 字段类型,b.length as 字段长度,b.colstat as 是否自动增长 from sysobjects a inner join syscolumns b on a.id=b.id inner join systypes c on c.xusertype=b.xtype where a.name =@ObjName order by B.ColID RETURN END 经过自己测试,感觉还行。这有什么难得?直接写个shell就ok了么。给个mysql数据库的例子,使用bash哈:
#!/bin/sh
mysql -uroot -p你的密码 <<eof
create database testone
use testone
create table test{建表语句}
eof
以上可以自行扩展。仅供参考。
回答你这个问题还是比较繁杂的,下面还是生成表查询、更新查询、追回查询和删除查询一个一个来说吧
生成表查询:
从一个或多个表中检索数据,然后将结果集加载到一个新表中。该新表可以驻留在已打开的数据库中,您也可以在其他数据库中创建该表。
通常,在需要复制或存档数据时,可创建生成表查询。
若要创建生成表查询,请首先创建选择查询,然后将其转换为生成表查询。选择查询可以使用计算字段和表达式来帮助返回所需的数据。
更新查询:
使用更新查询可以添加、更改或删除一条或多条现有记录中的数据。可以将更新查询视为一种功能强大的“查找和替换”对话框形式。可以输入选择条件(大致相当于搜索字符串)和更新条件(大致相当于替换字符串)。与“查找和替换”对话框不同,更新查询可接受多个条件,使您可以一次更新大量记录,并使您可以一次更改多个表中的记录。
在运行更新查询之前,应当先备份数据库。更新查询的结果无法撤消,因此进行备份可确保始终能够取消更改。
使用更新查询的最可靠方法是先创建一个可测试选择条件的选择查询。例如,假设您要为某一给定客户将一系列“是/否”字段从“否”更新为“是”。为此,可以向选择查询中添加条件,直到它为该客户返回所有在记录中包含“否”的记录。在确定该查询返回正确的记录后,可将其转换为更新查询,输入更新条件,然后运行查询以更改选定值。本节中的步骤说明如何创建选择查询,然后将其转换为更新查询。
追加查询:
追加查询可将一组记录(行)从一个或多个源表(或查询)添加到一个或多个目标表。通常,源表和目标表位于同一数据库中,但并非必须如此。例如,假设您获得了一些新客户以及一个包含有关这些客户的信息表的数据库。为了避免手动输入这些新数据,可以将这些新数据追加到数据库中相应的表中。
创建追加查询的过程的基本步骤如下:
创建选择查询。
将选择查询转换为追加查询。
为追加查询中的每一列选择目标字段。
运行该查询以追加记录。
删除查询:
删除查询将删除每个字段中的所有数据,包括唯一标识记录的键值。运行该查询时,它始终会从表中删除整个行。此过程包括以下主要步骤:创建一个选择查询并确保该查询返回您要删除的记录,然后将此查询转换为删除查询,并运行该查询以删除数据。
从上面可以看出来行为查询(生成表查询、更新查询、追回查询和删除查询)因为在ACCESS数据库中都具有不可即时还原即ROLLBACK功能,都会先用选择查询确认语句的效果及需要处理的记录集合
其实ACCESS都提供了可视化的 *** 作界面来做这些行为,如果要用SQL来一一对应的话,就是
生成表查询 create table
更新查询 update table
追回查询 insert into table
删除查询 delete table
具体的写法你可以看一些SQL语句的实例,还有什么问题的话可以QQ留言给我。
评论列表(0条)