Sim*_*onJ 4 sql-server stored-procedures
在 MS SQL (2008 R2) 中,我凭经验发现,在以下 SQL 中,存储过程从定义该过程的同一架构中的表中返回数据,但如果没有这样的架构,则将默认返回到用户的默认架构被发现。
虽然这看起来很合乎逻辑,但是否有人有章节介绍 MSSQL 在访问存储过程中的非完全限定表时使用模式解析的优先顺序?
假设当前用户将 dbo 作为默认架构。
CREATE SCHEMA [s1]
GO
CREATE TABLE [dbo].[TestTable] ([Id] INT)
GO
CREATE TABLE [s1].[TestTable] ([AnotherId] INT)
GO
CREATE PROCEDURE [dbo].[GetTestTable]
AS BEGIN
SELECT * FROM [TestTable]
END
GO
CREATE PROCEDURE [s1].[GetTestTable]
AS BEGIN
SELECT * FROM [TestTable]
END
GO
EXEC [dbo].[GetTestTable]
-- Returns [Id]
EXEC [s1].[GetTestTable]
-- Returns [AnotherId]
DROP TABLE [s1].[TestTable]
GO
EXEC [s1].[GetTestTable]
-- Returns [Id]
Run Code Online (Sandbox Code Playgroud)