如何在 SQL 服务器中保存包含错误的存储过程?
How can I save a stored procedure which contains errors in SQL Server?
我想根据 SQL 服务器保存包含错误的存储过程。
这是程序代码:
Create PROCEDURE [Product].[JewelSearch]
@JewelItem bigint,
@JewelType nvarchar(50),
@JewelMate nvarchar(50)
AS
BEGIN
SET NOCOUNT ON;
SELECT *
FROM Product.@JewelType
WHERE Material = @JewelMate OR Item# = @JewelItem;
END
问题是我有一个 Product
架构,我从我的主应用程序中获取 table 名称并将其保存在 @JewelType
和主应用程序中的每次搜索中table 名称必须更改,并且每次它们在 @JewelType
中都会是不同的 table 名称。
根据我的说法,查询是完美的,但 SQL 服务器不允许我执行它并保存它。有什么办法可以强制保存这个存储过程吗?希望你能理解我的问题,如果可能请帮助我。
如果是 SQL 服务器,像这样的东西应该可以工作
Create PROCEDURE [Product].[JewelSearch]
@JewelItem bigint,
@JewelType nvarchar(50),
@JewelMate nvarchar(50),
@SQL nvarchar(max)
AS BEGIN
SET NOCOUNT ON;
SET @SQL = 'Select * From Product.'+@JewelType+' where Material = '+@JewelMate+' OR Item# = '+CAST(@JewelItem as nvarchar(50))+'; '
EXEC(@SQL)
END
这是未经测试的,因为我在 Mac,但你明白了。
如果您要使用它,请注意动态 SQL 与 SQL 注入相关的危险。
我想根据 SQL 服务器保存包含错误的存储过程。
这是程序代码:
Create PROCEDURE [Product].[JewelSearch]
@JewelItem bigint,
@JewelType nvarchar(50),
@JewelMate nvarchar(50)
AS
BEGIN
SET NOCOUNT ON;
SELECT *
FROM Product.@JewelType
WHERE Material = @JewelMate OR Item# = @JewelItem;
END
问题是我有一个 Product
架构,我从我的主应用程序中获取 table 名称并将其保存在 @JewelType
和主应用程序中的每次搜索中table 名称必须更改,并且每次它们在 @JewelType
中都会是不同的 table 名称。
根据我的说法,查询是完美的,但 SQL 服务器不允许我执行它并保存它。有什么办法可以强制保存这个存储过程吗?希望你能理解我的问题,如果可能请帮助我。
如果是 SQL 服务器,像这样的东西应该可以工作
Create PROCEDURE [Product].[JewelSearch]
@JewelItem bigint,
@JewelType nvarchar(50),
@JewelMate nvarchar(50),
@SQL nvarchar(max)
AS BEGIN
SET NOCOUNT ON;
SET @SQL = 'Select * From Product.'+@JewelType+' where Material = '+@JewelMate+' OR Item# = '+CAST(@JewelItem as nvarchar(50))+'; '
EXEC(@SQL)
END
这是未经测试的,因为我在 Mac,但你明白了。
如果您要使用它,请注意动态 SQL 与 SQL 注入相关的危险。