日期:2014-05-18 浏览次数:20459 次
USE LzmTWWorks GO CREATE PROCEDURE [dbo].[CreateLDateFunction] @Database nvarchar(50) ,@Namespace nvarchar(50)=N'dbo' ,@FunctionName nvarchar(50) ,@LDateTableNamespace nvarchar(50)=N'dbo' ,@LDateTable nvarchar(50) AS BEGIN DECLARE @SQL nvarchar(MAX) SELECT @SQL = [LzmTWWorks].[dbo].[GetCreateLdateFunctionStatement] ( @Namespace ,@FunctionName ,@LDateTableNamespace ,@LDateTable) SET @SQL = N'USE ' + @Database + ' ' + @SQL PRINT @SQL EXEC sp_executesql @SQL END
DECLARE @return_value int EXEC @return_value = [LzmTWWorks].[dbo].[CreateLDateFunction] @Database = N'EmployeeWorks', @FunctionName = N'FunTest', @LDateTable = N'测试' SELECT 'Return Value' = @return_value
USE EmployeeWorks CREATE FUNCTION [dbo].[FunTest] ( @当前时间 [dbo].[LDate] = N'Current' ) RETURNS TABLE AS RETURN ( SELECT a.* FROM [dbo].[测试] a RIGHT OUTER JOIN ( SELECT [测试ID] ,MIN(DISTINCT [截止日期])AS 查询时间 FROM [dbo].[测试] WHERE @当前时间 BETWEEN [起始日期] AND [截止日期] GROUP BY [测试ID] ) b ON a.[测试ID]= b.[测试ID] AND a.截止日期 = b.查询时间 ) 消息 111,级别 15,状态 1,第 2 行 'CREATE FUNCTION' 必须是查询批次中的第一个语句。 消息 137,级别 15,状态 2,第 17 行 必须声明标量变量 "@当前时间"。 (1 行受影响)
USE Employee GO CREATE FUNCTION ... GO
------解决方案--------------------
USE EmployeeWorks
go
CREATE FUNCTION [dbo].[FunTest]
....
------解决方案--------------------
CREATE FUNCTION [dbo].[FunTest]
(
@当前时间 datetime
)
RETURNS TABLE
AS
RETURN
------解决方案--------------------
USE LzmTWWorks GO CREATE PROCEDURE [dbo].[CreateLDateFunction] @Database nvarchar(50) ,@Namespace nvarchar(50)=N'dbo' ,@FunctionName nvarchar(50) ,@LDateTableNamespace nvarchar(50)=N'dbo' ,@LDateTable nvarchar(50) AS BEGIN DECLARE @SQL nvarchar(MAX) SELECT @SQL = [LzmTWWorks].[dbo].[GetCreateLdateFunctionStatement] ( @Namespace ,@FunctionName ,@LDateTableNamespace ,@LDateTable) SET @SQL = N'USE ' + @Database + ' go ' + @SQL PRINT @SQL EXEC sp_executesql @SQL END
------解决方案--------------------
你能否简化一下问题,这个表结构都没有
------解决方案--------------------
我总算看明白你的意思了,没办法,人笨了点
----
exec()里面不能有go
'CREATE FUNCTION' 必须是查询批次中的第一个语句。
exec()结束之后sqlcontext仍然返回调用它的状态
---
所以,总的来说是没有办法
------解决方案--------------------
只要上面三条有一条能够解决掉,这个问题就了结了,估计很玄
------解决方案--------------------
此题无解.
------解决方案--------------------
搞不定
------解决方案--------------------
变通的方法.
每个库下建相应的存储过程执行当前库下CREATE FUNCTION 的操作.