Use database inside a stored procedure

后端 未结 7 1416
故里飘歌
故里飘歌 2020-12-10 10:30

I need to make a stored procedure which creates a user in more than one database. Something like this:

USE [database1]

CREATE USER [userLogin] FOR LOGIN [us         


        
7条回答
  •  一整个雨季
    2020-12-10 11:19

    If you're writing dynamic SQL with EXEC sp_executesql ('query1') or EXEC ('query2') this will return correct db which you want. If you're writing static SQL or your query outside of dynamic SQL quotes or parantheses it will work on master (where you create stored procedure(default is master)).

    CREATE PROCEDURE master.dbo.mysp1
    AS
    
        EXEC ('USE model; SELECT DB_NAME()') -- or sp_executesql N'USE model; SELECT DB_NAME()' 
        --this returns 'model'
    
    GO
    
    
    CREATE PROCEDURE master.dbo.mysp2
    AS
    
        EXEC ('USE model;') -- or sp_executesql N'USE model;'
        SELECT DB_NAME() 
        -- this returns 'master'
    
    GO
    

提交回复
热议问题