ALTER PROCEDURE [dbo].[Bcp] 
(
@textname nvarchar(50), --服务器上面临时文件的地址
@tablename nvarchar(100), --bcp导入文件
@tablename1 nvarchar(100), --将tablename表里面的数据导入
@Filter int --是否过滤重号
)
AS
BEGIN
declare @comparestring varchar(8000)--对比
declare @blacktable varchar(5000)--黑名单(用于前台显示)
set @comparestring=@tablename1+'.mobile'
set @blacktable='templist'
declare @selectstring varchar(5000)
set @selectstring='select '+@comparestring+' from '+@tablename1+' where '+@comparestring+'=BlackList.Mobile'--过滤黑名单
print @selectstring
exec (@selectstring)
end

解决方案 »

  1.   

    if exists(select 1 from sysobjects where name='File2Table' and objectproperty(id,'IsProcedure')=1)
    drop procedure File2Table
    go/*--实现数据导入/导出的存储过程 可以实现导入/导出 整个数据库/指定表 到文本文件--邹建 2003.07(引用请保留此信息)--*//*--调用示例 --导出指定表
    exec file2table @tbname=N'jobs,pub_info',@filename='c:\[@tbname].txt' --导出所有表
    exec file2table @filename='c:\[@dbname]_[@tbname].txt' --导入所有表
    exec file2table @filename='c:\[@dbname]_[@tbname].txt',@isout=0
    --*/
    create procedure File2Table
    @tbname nvarchar(4000)='',   --表名列表,如果不指定,则表示所有用户表
    @filename nvarchar(1000)='', --导出的文件名,如果不指定,导出到SQL Server的默认备份目录\[@dbname]_[@tbname].txt,其中[@dbname]在处理中会替换为数据库名,[@dbname]会用表名代替
    @isout bit=1,                --1为导出(默认),0为导入
    @username sysname='',        --用户名,如果sql不允许使用NT验证方式登录,则必须指定
    @password sysname='',        --密码
    @code char(1)=N'N'           --文件编码,可以是n,c,N,W,作用参考bcp语法(如果是数据传输需要,建议用N)
    as
    declare @s nvarchar(4000)if isnull(@code,N'') not in(N'n',N'c',N'N',N'W')
    set @code='N'--备份文件名
    if isnull(@filename,N'')=N''
    begin
    select top 1 @filename=rtrim(reverse(filename)) 
    from master.dbo.sysfiles 
    where name=N'master'
    select @filename=stuff(@filename,1,charindex('\',@filename),N'')
    ,@filename=reverse(stuff(@filename,1,charindex('\',@filename),N''))
    +N'\BACKUP\'+db_name()+N'_[@tbname].txt'
    end
    else
    set @filename=replace(@filename,N'[@dbname]',db_name())declare tb cursor local
    for
    select N'bcp "'+db_name()
    +N'.'+quotename(user_name(uid))
    +N'.'+quotename(name)
    +N'"'
    +case when @isout=1 then N' out' else N' in' end
    +N' "'
    +replace(@filename,N'[@tbname]',name)
    +N'" /'+@code
    +case when isnull(@username,N'')=N'' then N' /T'
    else N' /U"'+@username
    +N'" /P"'+isnull(@password,N'')+N'"'
    end
    from sysobjects
    where xtype=N'U' and status>=0
    and(isnull(@tbname,N'')=''
    or charindex(','+name+',',','+@tbname+',')>0)
    open tb
    fetch tb into @s
    while @@fetch_status=0
    begin
    exec master..xp_cmdshell @s,no_output
    fetch tb into @s
    end
    close tb
    deallocate tb
    go
      

  2.   

    --检查print
    print @selectstring
    --exec (@selectstring)