TSQL:在函数中执行SP,该函数在select语句中调用

时间:2015-05-11 07:46:04

标签: sql-server tsql stored-procedures

我在网络服务中调用的数据库 db_customers_ws 中有一个SP get_customer_info
我需要从另一个数据库 db_customers_data 中获取man的所有电话号码,即0..N。

[db_customers_ws]。[dbo]。[get_human_info]

CREATE PROCEDURE get_customer_info 
    ...
    select col1
    ,col2
    ,getDataFromAnotherDatabase(@id)

我想将数据作为连接字符串,所以我进行函数调用
[db_customers_ws]。[dbo]。[getDataFromAnotherDatabase]

    CREATE FUNCTION [dbo].[getDataFromAnotherDatabase]  
    returns nvarchar(4000)  
    as...

    @proc = [get_data_db_server] + '.[myproc]' -- [db_customers_data.[dbo].[get_phone_numbers_string]
    exec @proc
    @arg1=@arg1,
    @arg2='meh'
  

错误号:557错误消息:只能在函数内执行函数和某些扩展存储过程。错误严重性:16错误状态:2错误行:81错误过程: get_customer_info

你能否告诉我一些解决错误的方法?
如果不可能,也许您已经知道如何通过其他方式实现这一结果?

谢谢

1 个答案:

答案 0 :(得分:0)

你可以描述myproc函数吗?

您似乎需要在两个数据库之间进行连接。 如果你这样做的话,这不是问题:

CREATE PROCEDURE get_customer_info 
    ...
    select A.col1
    ,A.col2
    ,B.Phone1 + B.Phone2
    from db_customers_ws.dbo.get_human_info A
    join db_customers_data.dbo.UNKNOWNTABLENAME B
    on A.EmpoyeeID = B.EmpoyeeID

希望它有效......