2
即使在创建存储过程时表存在,是否有办法强制延迟名称解析?
在SQL Server中创建存储过程时,可以引用不存在的表。但是,如果该表确实存在,则该过程中引用的任何列都必须存在于该表中(“ 延迟名称解析”)。 是否可以指示SQL Server推迟过程中引用的所有表的名称解析,而不管它们是否存在?我确实希望保留常规语法检查,因此即使有可能,也无法将存储过程定义修改到系统表中。 我希望我的要求看起来有些怪异,所以这里有一些背景知识:我会从用C#编写的应用程序中自动生成表定义和存储过程,并且我很难更改代码以根据SQL的需要对更改进行排序他们。我的代码“保证”架构在事务中是一致的,但是目前,我无法保证在定义引用它们的存储过程之前已定义表列。 下面是C#创建的SQL的规范示例,“说明”了我要解决的问题。 --Say this table already exists. CREATE TABLE myTable ( a NVARCHAR(MAX) ) GO --My C# code creates something like this BEGIN TRAN GO --the stored procedure gets generated first. CREATE PROCEDURE mySproc AS BEGIN SELECT a,b FROM myTable END --then the table update …