jjo*_*ras 4 sql sql-server stored-procedures sql-server-2008
我在一个名为的数据库中有一个名为PROC_fetchTableInfo的存储过程(从sys.tables中简单选择)
Cust
Run Code Online (Sandbox Code Playgroud)
我想在另一个名为的数据库中使用此过程
Dept
Run Code Online (Sandbox Code Playgroud)
我尝试使用命令在此数据库中执行此sp
EXECUTE Cust.dbo.PROC_fetchTableInfo
Run Code Online (Sandbox Code Playgroud)
但结果我从数据库Cust获取表.如何让这个程序在数据库部门工作?
存储过程与其代码中的对象紧密绑定.如果Cust.dbo.PROC_fetchTable引用一个表T,那就是数据库T中模式dbo中的表Cust.您可以从任何其他地方调用该过程,它将始终引用此表.
如果你需要在另一个数据库中的另一个表中运行相同的过程,那么到目前为止,最好的解决方案是使用新的过程:Dept.dbo.PROC_fetxTableInfo.这比使用Dynamic-SQL的替代方案更好.虽然从DRY和代码重用的角度来看这似乎是违反直觉的,但是T-SQL是一种数据访问语言,它不是一种编程语言,当你进入数据库时,你的C/C#思维模式会被置于门外.只需在Dept数据库中有另一个过程.
| 归档时间: |
|
| 查看次数: |
6994 次 |
| 最近记录: |