如何在引用存储过程中的表时硬编码数据库名称。例如,有两个数据库db1和db2。我在db2中编写了一个存储过程,它引用了两个表,一个来自db1,另一个来自db2。两者都在同一个sybase服务器上。
答案 0 :(得分:4)
如果我正确理解您的问题,一方面,在您的存储过程中,您可以直接通过名称引用同一数据库中的表
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
答案 1 :(得分:0)
您需要保持代码可移植,涉及2个数据库,但避免按名称引用数据库。然后,您可以创建代理表(或代理视图,如果12.5中存在此类视图)。请参阅代理表以了解本地对象。
这将有效,但每次移动/更改数据库时都需要额外注意。但无论如何,你所关注的问题可以分开。