SQL SERVER操作ACCESS的存储过程
/*
--作用:SQL SERVER操作ACCESS的存储过程
----------------------用法-------------------------------
--创建表tc
exec sp_operate_access 'create table tc(id int)','c:\db1.mdb'
go
--在tc表插入数据
exec sp_operate_access 'insert into tc(id) values(1)','c:\db1.mdb'
go
--删除tc表的数据
exec sp_operate_access 'delete from tc where id=1','c:\db1.mdb'
go
--删除TC表
exec sp_operate_access 'drop table tc','c:\db1.mdb'
go
--删除存储过程
drop proc sp_operate_access
*/
--创建存储过程
create proc sp_operate_access
@cmdsql varchar(8000),
@accessfilename nvarchar(1000)
as
begin
declare @out int,@err int,@obj int,@constr nvarchar(1000),@src nvarchar(255),@desc nvarchar(255)
select @constr='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+@accessfilename
exec @err=sp_oacreate 'adodb.connection',@obj out
if @err=0
begin
exec @err=sp_oamethod @obj,'open',null,@constr
if @err=0
begin
exec @err=sp_oamethod @obj,'execute',@out out,@cmdsql
if @err=0
begin
EXEC sp_OAMethod @obj, 'Quit'
exec sp_oadestroy @obj
return
end
else
 
相关文档:
原理:对需要去重复记录的字段按组排序,然后取其中一条记录。在总查询语句中使用in语法过滤
去掉重复记录
select * from company where comid in (select Max(comid) from company group by companyname)
得到重复记录数
select * from company where comid not in (select Max(comid) from company group by companyn ......
1 :普通SQL语句可以用exec执行
Select * from tableName
exec('select * from tableName')
exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N
2:字段名,表名,数据库名之类作为变量时,必须用动态SQL
declare @fname varchar(20)
set @fname = 'FiledName'
Select @fname fr ......
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER proc [dbo].[pr_xls_to_tb]
@path varchar(200),--EXCEL路径名
@tbName varchar(30),--表名
@stName varchar(30) --excel中要读的SHEET名
as
declare @sql varchar(500),--最后要执行的SQL
@stName_Real varchar(35),--真正的SHEET名
......
讲解SQL Server中容易混淆的数据类型
(1)char、varchar、text和nchar、nvarchar、ntext
char和varchar的长度都在1到8000之间,它们的区别在于char是定长字符数据,而varchar是变长字符数据。所谓定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应 ......