通过replace命令将很大的信息进行转换,如下面的需求有一个项目,里面很多算法通过存储过程实现,数据使用数据表存储.
随着项目的不断发展,算法和其使用的数据表结构在不断优化,所以存储过程和数据表的结构需要不断更新,
但同时还要保持对以前的兼容性,即一个软件中要包含各个版本的相同算法
当前使用一个数字ID代表算法的版本,举一个计算距离的例子.
create table t_Note_Parameter_1
{
    int latitude not null,
    int longitude not null,
    int distance not null,
    primary key(latitude, longitude)
};create procedure sp_Compute_Distance_1
{
    update t_Note_parameter_1 set distance = sqrt(latitude*latitude) + sqrt(longitude*longitude)
};create table t_Note_Parameter_5
{
    int latitude not null,
    int longitude not null,
    int altitude not null,
    int distance not null,
    primary key(latitude, longitude, altitude)
};create procedure sp_Compute_Distance_5
{
    update t_Note_parameter_5 set distance = sqrt(latitude*latitude) + sqrt(longitude*longitude) + sqrt(altitude*altitude)
};create table t_Note_Parameter_Template1
{
    int latitude not null,
    int longitude not null,
    int distance not null,
    primary key(latitude, longitude)
};create procedure sp_Compute_Distance_Template1
{
    update t_Note_parameter_Template1 set distance = sqrt(latitude*latitude) + sqrt(longitude*longitude)
};create table t_Note_Parameter_Template2
{
    int latitude not null,
    int longitude not null,
    int altitude not null,
    int distance not null,
    primary key(latitude, longitude, altitude)
};create procedure sp_Compute_Distance_Template2
{
    update t_Note_parameter_Template2 set distance = sqrt(latitude*latitude) + sqrt(longitude*longitude) + sqrt(altitude*altitude)
};版本1到4的算法和数据结构是相同的,版本5到7的算法和数据结构是相同的
独立维护7个版本的数据表和存储过程是非常麻烦的,每个修改都需要作大量的重复工作,
希望能够采用模板的方式只创建两套算法和数据结构模板,
任何根据不同版本使用的算法模板创建各版本算法对应的数据表和存储过程,如下所示:create table templatetable
{
    int version not null,
    char(255) tablename not null,
    char(255) templateid not null,
    primary key(version, tablename, teplateid)
};create table templateprocedure
{
    int version not null,
    char(255) procedurename not null,
    char(255) templateid not null,
    primary key(version, procedurename, teplateid)
};insert templatetable(1, 't_Note_Parameter_Template1', 'Template1');
insert templatetable(2, 't_Note_Parameter_Template1', 'Template1');
insert templatetable(3, 't_Note_Parameter_Template1', 'Template1');
insert templatetable(4, 't_Note_Parameter_Template1', 'Template1');
insert templatetable(5, 't_Note_Parameter_Template2', 'Template2');
insert templatetable(6, 't_Note_Parameter_Template2', 'Template2');
insert templatetable(7, 't_Note_Parameter_Template2', 'Template2');insert templateprocedure(1, 'sp_Compute_Distance_Template1', 'Template1');
insert templateprocedure(2, 'sp_Compute_Distance_Template1', 'Template1');
insert templateprocedure(3, 'sp_Compute_Distance_Template1', 'Template1');
insert templateprocedure(4, 'sp_Compute_Distance_Template1', 'Template1');
insert templateprocedure(5, 'sp_Compute_Distance_Template2', 'Template1');
insert templateprocedure(6, 'sp_Compute_Distance_Template2', 'Template1');
insert templateprocedure(7, 'sp_Compute_Distance_Template2', 'Template1');现在通过replace命令可以将各模板的数据表和存储过程转换为各版本的数据表和存储过程,但是由于replace
所使用的变量最大只能有8000字符,而复杂的存储过程是大于8000的. 后来计划将模板的SP信息导入到一张txt表中
将表中的每一行数据进行转换,但又担心替换变量如'Template1'在两行之间切断,导致无法正确转换,
请问是否有好的方法能够实现将一个存储过程的中的某些固定字符进行替换,从而生成新的存储过程.
或是能够将存储过程信息在导入到txt表中时能够根据自动根据换行符,只将一行信息导入一个数据块中,这样能够保证替换变量的完整性.