小编典典

使用exec()在sp中执行运行时查询时,“默认模式不存在”的错误。

sql

我在sp内进行了运行时查询,并使用exec()执行了sp内的查询,但是在创建sp时出现了错误

The default schema does not exist.

SP是:

CREATE PROCEDURE MySP
    @tableName varchar(100)

AS
BEGIN   
    SET NOCOUNT ON;

declare @selectQuery varchar(MAX)

set @selectQuery = 'select * from ' + @tableName

exec(@selectQuery)

end

友善的帮助


阅读 117

收藏
2021-03-17

共1个答案

小编典典

使用 CREATE PROCEDURE dbo.MySP

您登录的用户必须具有不存在的默认架构。

可以将DEFAULT_SCHEMA设置为数据库中当前不存在的架构。

另外,您应该使用quotename(@tableName)和参数类型,sysname而不是varchar(100)避免SQL注入或仅从非标准对象名称中出错。

2021-03-17