up
能否用TEXT类型作参数进行处理,高手给个思路

解决方案 »

  1.   

    参数用表变量,把10万个以上的字符作为表变量的记录来传,存储过程接受后执行:exec(@sql1+@sql2+@sql3...)
      

  2.   

    SQL没有提供TEXT类型变量及处理方法,所以TEXT类型是不行的,不用想
      

  3.   

    to: pbsql(风云) 
    表变量?
    程序中的代码(VB),假设:
    dim strSql as string
    strSql="insert into xxxxxxxxxxx  insert into xxxxxxx insert into xxxxxxxx
    ........................
    ........................   (10万个字符)
    "我还是不大清楚,能否具体一些?
      

  4.   

    既然是在程序中组合的,用ntext变量就行了嘛.
      

  5.   

    pbsql(风云)的解决方法确实值得考虑,text是不可以作为参数来使用的
      

  6.   

    --示例--写个执行组合语句的存储过程
    create proc p_execute_sql
    @sql ntext  --用ntext是防止处理中文时出现乱码
    as
    exec(@sql)
    go--程序中调用的时候,只需要把组合的sql语句赋值给@sql这个参数就行了.
    --比如,VB中可以这样调用:
    Sub test()
        Dim iCmd As ADODB.Command
        
        Set iCmd = New ADODB.Command
        With iCmd
            .ActiveConnection = iConc   'iConc是数据库连接字符串
            .CommandType = 4            '类型为存储过程adCmdStoredProc
            
            .CommandText = "p_execute_sql"      '调用的存储过程名
            .Parameters.Refresh
            .Parameters("@sql") = "程序中已经组合好的,要执行的sql语句"
            
            '执行
            .Execute
        End With
    End Sub
      

  7.   

    text/ntext不能定义为变量,但可以定义为存储过程的参数,所以只需要借助存储过程处理一下就OK了.
      

  8.   

    说点题外的,你那样处理效率极其低下,建议改成批处理:
    dim strSql as string
    strSql="insert into t(...)
    select ... union all
    select ... union all
    select ..."
      

  9.   

    declare @sql1 varchar(8000),@sql2 varchar(8000),@sql3 varchar(8000),....
    set @sql1='select .............'
    set @sql2='select .............'
    set @sql3='select .............'
    .........exec(@sql1+@sql2+@sql3+...)
      

  10.   

    对于题外话的题外话, to  pbsql(风云)
    select ...
    union all select ...
    的用法需要合并多个输入表,挺废资源的,
    以前试过,大概拼到1300-1500条的时候,就因为资源不够中断了,
    所以这种方法并不适用于大批量数据insert
      

  11.   

    to pbsql(风云) 
    由于特殊原因。。————————————————————————————
    to zjcxc(邹建) 
    原来exec可以直接用text/ntext的,问题基本上就解决了
    SQL Server的text有时真搞不懂啊。谢谢参与的朋友
    待回我试试,揭帖先。