自己写好了一个SQL函数,此函数在部分数据库中需要用到,所以先通过存储过程的动态语句动态创建每个数据库的函数,只要给存储过程传递一个数据库的名称即可。由于函数写得很长,不知道是否有工具可以把每一行SQL语句转为动态语句的的字符串
比如:
if exists (select * from sysobjects where name ='We_Fn_GetUFGradeDef' and xtype in ('IF','FN','TF'))
转为: +'if exists (select * from sysobjects where name ='We_Fn_GetUFGradeDef' and xtype in (''IF'',''FN'',''TF''))'+CHar(13)
转换规则:
1) 每一行SQL语句前加"+'"
2) 每一行后面加"'+Char(13)"
3) 把单个单引号转为两个单引号,即"'"转为"''"

解决方案 »

  1.   

    不全是这样。你要试试才知道的。。
    对于以下语句:
    declare @str varchar(1000)
    declare @id varchar(10)
    select @id='2'
    select 
    @str='select *from tb where id='''+@id+''''内部字符串要多加一个',更改如下
    'if exists (select * from sysobjects where name =''We_Fn_GetUFGradeDef'' and xtype in (''IF'',''FN'',''TF''))'+CHar(13)
      

  2.   

    以下为转换后的语句Declare @s varchar(1000)
    Set @s=''
    +'declare @str varchar(1000)'+Char(13)
    +'declare @id varchar(10)'+Char(13)
    +'select @id=''2'''+Char(13)
    +'select '+Char(13)
    +'@str=''select *from tb where id=''''''+@id+'''''''''+Char(13)
    Print @s执行之后declare @str varchar(1000)
    declare @id varchar(10)
    select @id='2'select @str='select *from tb where id='''+@id+''''
      

  3.   

    经过测试,发现http://d.download.csdn.net/down/1210608/fenghaojie
    SQL格式化工具可以实现此功能