Sql server MS-SQL-08:是否可以在创建函数之前创建依赖于函数的视图?

Sql server MS-SQL-08:是否可以在创建函数之前创建依赖于函数的视图?,sql-server,dependencies,Sql Server,Dependencies,使用MS-SQL-08: 是否可以临时禁用依赖项检查,以便创建一个使用在创建视图时不存在(尚未创建)的函数的视图。[然后创建所需的函数,最后重新启用依赖项检查] 假设我有一个视图V,它使用函数F,我希望能够实现的顺序是 关闭依赖项检查 1.创造 2.创建F 重新启用依赖项检查 谢谢。这称为延迟名称解析,虽然您可以创建一个从表中选择的过程,但如果该表不存在,您不能使用使用函数的视图来执行该操作 程序示例 create procedure prTest as select * from MyTest

使用MS-SQL-08:

是否可以临时禁用依赖项检查,以便创建一个使用在创建视图时不存在(尚未创建)的函数的视图。[然后创建所需的函数,最后重新启用依赖项检查]

假设我有一个视图V,它使用函数F,我希望能够实现的顺序是

关闭依赖项检查 1.创造 2.创建F 重新启用依赖项检查


谢谢。

这称为
延迟名称解析
,虽然您可以创建一个从表中选择的过程,但如果该表不存在,您不能使用使用函数的视图来执行该操作

程序示例

create procedure prTest
as select * from MyTestTable
go

create table MyTestTable(id int)
go

exec prTest

这被称为
延迟名称解析
,虽然您可以创建一个从表中选择的过程(如果该表不存在),但您不能使用使用函数的视图来执行该操作

程序示例

create procedure prTest
as select * from MyTestTable
go

create table MyTestTable(id int)
go

exec prTest

一种可能的解决方法是创建一个虚拟(或占位符)函数,使用它创建视图而不绑定模式,然后用所需的函数替换该函数


这可能不起作用——我隐约记得有一种情况,我们在视图中更改了一个表,然后视图在“重置”之前不起作用(这可能很简单,就像使用完全相同的定义发出ALTER view语句一样)。做大量测试,准备编写笨拙的代码。

一个可能的解决方法是创建一个虚拟(或占位符)函数,使用它创建视图而不绑定模式,然后用所需的函数替换该函数


这可能不起作用——我隐约记得有一种情况,我们在视图中更改了一个表,然后视图在“重置”之前不起作用(这可能很简单,就像使用完全相同的定义发出ALTER view语句一样)。做大量测试,准备编写笨拙的代码。

我认为这是不可能的,因为SQL Server需要在创建时评估视图,以派生列的类型


只需创建一个伪函数,或者如果您知道将有一个返回特定类型的函数,请将其替换为类似于
SELECT CAST(NULL为tinyiny)的内容作为MyFuncPlaceholder

我认为这是不可能的,因为SQL Server需要在创建时评估视图以派生列的类型


只需创建一个伪函数,或者如果您知道将有一个返回特定类型的函数,请将其替换为类似于
SELECT CAST(NULL为tinyiny)的东西作为MyFuncPlaceholder

,这听起来很愚蠢。首先创建函数。这听起来很傻。首先创建函数。sp_refreshview可能必须调用sounds right。最近我与视图没有太多关系。sp_refreshview可能必须被称为sounds right。最近我对观点没有太多的兴趣。