代码之家  ›  专栏  ›  技术社区  ›  kishore

引用表时的数据库名称-Sybase

  •  1
  • kishore  · 技术社区  · 15 年前

    如何避免在引用存储过程中的表时对数据库名称进行硬编码。例如,有两个数据库DB1和DB2。我正在DB2中编写一个存储过程,它引用两个表,一个来自DB1,另一个来自DB2。两者都在同一个Sybase服务器上。

    2 回复  |  直到 15 年前
        1
  •  4
  •   martin clayton egrunin    15 年前

    如果我正确理解了您的问题,一方面,在存储过程中,您可以通过名称直接引用同一数据库中的表。

    SELECT  ...
    FROM    table_in_db2
    

    可以引用数据库中的表 db1 通过在数据库名称和空所有者之前加前缀:

    SELECT  ...
    FROM    db1..table_in_db1
    

    另一方面,如果你想 避免 在过程中对数据库名称进行硬编码,可以在数据库中创建视图 db2 它引用了 dB1 表:

    CREATE VIEW view_in_db2
    AS
        SELECT  *
        FROM    db1..table_in_db1
    

    在程序中使用:

    SELECT  ...
    FROM    view_in_db2
    
        2
  •  0
  •   user215054    15 年前

    您需要保持代码的可移植性,涉及2个数据库,但要避免按名称引用数据库。然后您可以创建代理表(或代理视图,如果12.5中存在此类视图)。有关本地对象,请参阅代理表。

    这将有效,但每次移动/更改数据库时都需要格外小心。但是不管怎样,你所追求的关注的分离是可以实现的。

    推荐文章