sql - 使用 exec() 在 sp 内执行运行时查询时遇到错误 "The default schema does not exist."

标签 sql sql-server sql-server-2005

我在 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

请帮忙

最佳答案

使用CREATE PROCEDURE dbo.MySP

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

DEFAULT_SCHEMA can be set to a schema that does not currently exist in the database.

此外,您还应该使用 quotename(@tableName) 和参数类型 sysname 而不是 varchar(100) 以避免 SQL 注入(inject)或只是来自非标准对象名称的错误。

关于sql - 使用 exec() 在 sp 内执行运行时查询时遇到错误 "The default schema does not exist.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3733635/

相关文章:

Mysql 减去 'N' 天日期值并与当前日期进行比较。 N 和 Date 是两个列值

c# - SQL Server 查询 : Get a List of Columns Which Don't Exist in Another Table's Field

php - 插入两行时 stmt->execute 不起作用

sql-server - 批量插入到 SQL Server,插入语句与一条插入 XML 语句?

sql - T-SQL : Using OVER and PARTITION BY

sql - Select and Update with join 给出不同的记录

mysql - 需要优化帮助

php - 如何将 INT 类型行中的默认列更改为空集

sql - SQL Server 2008 上的批量删除(有类似批量复制 (bcp) 之类的用于删除数据的功能吗?)

sql - 在 sql server 2005 中的一个查询中插入和更新