2017-03-28 23 views
0

標準クエリとオープンクエリを使用する関数があります。関数/プロシージャ内のパラメータを持つOpenQuery

CREATE function [dbo].[udf_funcForAll](@DateFrom datetime, @DateTo datetime, @param smallint) 
returns table 
as 
return (
    select * from [dbo].[udf_func] ('2016-10-01','2017-03-15',0) 
    union all 
    select * from openquery(l1,'select * from [dbo].[udf_func] (''2016-10-01'',''2017-03-15'',''0'')') 
    union all 
    select * from openquery(l1,'select * from [dbo].[udf_func] (''2016-10-01'',''2017-03-15'',''0'')') 
    union all 
    select * from openquery(l2,'select * from [dbo].[udf_func] (''2016-10-01'',''2017-03-15'',''0'')') 

私のクエリで@ DateFrom、@ DateToおよび@paramというパラメータを使用したいと思います。

私は、クエリを次のようにプロシージャを作成しようとすると、私はエラーを取得:「文字列から日付/時刻を変換する際の変換が失敗した 。」

declare @DateFrom DateTime = '2016-10-01' 
declare @param int = 1 


declare @sqlquery nvarchar(max) = 'select * from [dbo].[udf_func] ('''[email protected]+''',''2017-03-15'','[email protected]+')' 

変数としてクエリの日時を渡すためにどのように?

答えて

0

すべてをnvarcharに変換するか、nvarcharにキャストする必要があります。 SQLでは複数のデータ型を使用できません。たとえば、これを使用します。

declare @DateFrom NVARCHAR(100) = '2016-10-01' 
    declare @param NVARCHAR(100) = 1 

    DECLARE @sqlquery nvarchar(max) = 'select * from [dbo].[udf_func] ('''[email protected]+''',''2017-03-15'', '[email protected]+')' 
関連する問題