3

そのデータベースで選択を実行できるように、tsql関数にデータベース名を渡す方法はありますか

ALTER function [dbo].[getemailjcp]
(
@DB_Name varchar(100)
)
Returns varchar(4000)
AS
BEGIN
DECLARE @out varchar (4000);
DECLARE @in varchar (1000);
Set @out = 
(select substring
((select ';' + e.email from 
(SELECT DISTINCT ISNULL(U.nvarchar4, 'NA') as email 
FROM [@DB_Name].dbo.Lists ...
4

2 に答える 2

1

動的 SQL ステートメントを作成するには、ストア プロシージャを使用する必要があります。例えば:

DECLARE @DynamicSQLStatement NVARCHAR(MAX)
DECLARE @ParmDefinition NVARCHAR(500)
DECLARE @FirstID BIGINT

SET @ParmDefinition = N'@FirstID BIGINT OUTPUT'
SET @DynamicSQLStatement=N' SELECT @FirstID=MAX(ID) FROM ['+@DatabaseName+'].[dbo].[SourceTable]'


EXECUTE sp_executesql @DynamicSQLStatement,@ParmDefinition,@FirstID=@FirstID OUTPUT

SELECT @FirstID

この例では:

  1. @DatabaseName は、パラメーターとしてプロシージャーに渡されます。

  2. @FirstID は出力パラメーターです。この値は、プロシージャーから返される可能性があります。

「sp_executesql」の詳細については、次を参照してください。

http://msdn.microsoft.com/en-us/library/ms188001.aspx

于 2012-09-22T16:48:43.740 に答える