如果表中存在该表,则proc中使用的表默认为调用模式而不是dbo

时间:2015-01-21 12:38:58

标签: sql-server stored-procedures sql-server-2012

  1. 我在mytabledbo架构中创建了schema1
  2. 然后使用mytable进行处理。注意架构名称不存在。
  3. 执行proc使用schema1.mytable。当schemaname不存在时,它不应该是dbo.mytable吗?这里涉及的概念是什么?

    create proc schema1.myproc
    as
    begin
    
       select id into #tbl
       from mytable
    
       select * from #tbl
    
    end
    
    
    select * from dbo.mytable
    ++++++++
    id  name
    1   a
    ++++++++
    
    select * from schema1.mytable
    ++++++++
    id  name
    2   b
    ++++++++
    
    
    exec schema1.myproc
    ++++++++
    id
    2
    ++++++++
    

1 个答案:

答案 0 :(得分:0)

由于您的存储过程架构为schema1,如果您未提及架构名称,则会使用

将您的sp更改为此将返回dbo数据

create proc dbo.myproc
as
begin

   select id into #tbl
   from mytable

   select * from #tbl

end