Sql 动态函数问题

Sql 动态函数问题,sql,tsql,sql-server-2008,Sql,Tsql,Sql Server 2008,我试图创建一些动态DDL来构建一个函数,当我运行它时,它总是给我一个错误。我不确定我在格式上做错了什么……我尝试了很多不同的事情,现在出于好奇,我想了解如何让它工作。非常感谢您的任何意见 代码: 给我这个错误: Msg 156, Level 15, State 1, Line 1 Incorrect syntax near the keyword 'FUNCTION'. Msg 178, Level 15, State 1, Line 7 A RETURN statement with a re

我试图创建一些动态DDL来构建一个函数,当我运行它时,它总是给我一个错误。我不确定我在格式上做错了什么……我尝试了很多不同的事情,现在出于好奇,我想了解如何让它工作。非常感谢您的任何意见

代码:

给我这个错误:

Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'FUNCTION'.
Msg 178, Level 15, State 1, Line 7
A RETURN statement with a return value cannot be used in this context.
但是,该代码……适用于:

DECLARE
 @FY nvarchar(10) = '01/01/2015'
,@SQL nvarchar(max) 

Select @SQL = 
        'ALTER FUNCTION dbo.GetFiscalDate() 
            RETURNS DATETIME 
         AS 
         BEGIN 
            DECLARE @RESULT DATETIME
            SELECT @RESULT = ' + @FY + '
            RETURN @RESULT;
         END'
exec sp_executesql @SQL
当我想传入参数而不是将它们与语句连接在一起时,我缺少了什么

像往常一样,我非常感谢所有的意见

谢谢


S

参数在执行计划中使用,以便您可以重用执行计划,而不是在DDL语句中,使用第二种方法执行计划中使用参数,以便您可以重用执行计划,而不是在DDL语句中,使用第二种方法我看不出您在字符串中的何处包含对函数的调用。 在字符串中放入的任何sql都应该直接在查询窗口中执行,而修改函数然后列出参数则不会这样做。必须使用正常语法中列出的参数执行函数

为什么不将@FY变量作为参数传递到函数中


我不确定您想做什么,但我不希望您上面描述的方法起作用。

我看不出您的字符串中包含对函数的调用。 在字符串中放入的任何sql都应该直接在查询窗口中执行,而修改函数然后列出参数则不会这样做。必须使用正常语法中列出的参数执行函数

为什么不将@FY变量作为参数传递到函数中

我不知道你想做什么,但我不希望你上面描述的方法奏效

DECLARE
 @FY nvarchar(10) = '01/01/2015'
,@SQL nvarchar(max) 

Select @SQL = 
        'ALTER FUNCTION dbo.GetFiscalDate() 
            RETURNS DATETIME 
         AS 
         BEGIN 
            DECLARE @RESULT DATETIME
            SELECT @RESULT = ' + @FY + '
            RETURN @RESULT;
         END'
exec sp_executesql @SQL