gpt4 book ai didi

sql - 如何从 SQL Server 中传递的参数中选择表名和列名?

转载 作者:行者123 更新时间:2023-12-01 11:02:40 25 4
gpt4 key购买 nike

我的数据库中有两个非常相似的表,我需要为我的 Visual Studio 2010 Web 应用程序编写一个存储过程,以便在给定表号的情况下从其中一个表中读取数据。

目前,我们只有两个表可供选择,但随着项目的发展,我可以看到它会越来越多。

这就是我正在尝试做的事情,但这段代码不正确:

PROCEDURE [dbo].[spGetData]
@tableID int
AS
BEGIN
SET NOCOUNT ON;
declare @col1 nvarchar(50), @table nvarchar(50)
set @col1=case when @tableID=1 then 'SMRequestID' else 'WHRequestID' end
set @table=case when @tableID=1 then 'SMRequest' else 'WHRequest' end

select @col1 as 'Request', WorkOrder, PartNumber, Qty, EmployeeID
from @table
END

基本上,ColumnNameTableName 取决于将传入的@tableID 参数。

我该怎么做呢?

注意:我的搜索没有找到任何相关内容,但我是 C# 开发人员而不是数据库开发人员。我想以前有人问过这个问题,只是我没有使用正确的关键字。

最佳答案

虽然我认为 Mark 是非常正确的,因为表数量少且查询简单,但这里是一个同时传递表名和列名的动态 sql 示例:

CREATE PROCEDURE spGetData
(
@TableName nvarchar(128),
@ColumnName nvarchar(128)
)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @SQL nvarchar(4000)
SET @SQL = 'SELECT ' + @ColumnName + ', as Request, WorkOrder, PartNumber, Qty, EmployeeID FROM ' + @TableName
EXEC sp_executesql @SQL
END

可以这样调用:

exec spGetData 'SMRequest', 'SMRequestID'
exec spGetData 'WHRequest', 'WHRequestID'

关于sql - 如何从 SQL Server 中传递的参数中选择表名和列名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9232005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com