SQL 列值到 table 名称
SQL column value to table name
在我的 SQL 数据库中,我想制作一个通用软件 link table。也许类似于以下内容:
create table soft_link(
id uniqueidentifier,
name varchar(255),
LINK uniqueidentifier,
TABLE varchar(255),
primary key(id));
假设我在数据库中的其他 table 中有对象 "b_object"。 LINK 列将是 b_object 的唯一标识符,而 TABLE 将是 table,其中 b_object 存储在数据库中。
现在我想制作一个存储过程"sp_ResolveSoftLink"。此方法将获取软 link 的 id,查找软 link 的 LINK 和 TABLE 列,然后使用 TABLE 和 LINK 查询 b_object.
以下是不正确的 SQL 语法,但希望它有助于说明我的问题。我想将这两个查询组合成一个存储过程和 return 第二个查询的结果:
select LINK, TABLE from soft_link where id = xxxxxx
select * from TABLE where id = LINK
-- return the result of the second select query
基本问题: How/can 我使用来自一个查询的 varchar return 在 SQL 中的同一存储过程中形成另一个查询?
您可以像这样创建一个存储过程。
这里,首先你必须将LINK和Table的值存储在变量中,然后使用这些变量形成另一个动态查询
CREATE PROC spName
@id INT
AS
BEGIN
Declare @LINKValue uniqueidentifier, @TABLE varchar(255),@SQL varchar(max)
SELECT @LINKValue = LINK , @TABLE = TABLE
FROM soft_link
WHERE soft_link id = @id
SET @SQL='SELECT * FROM';
SET @SQL = @SQL +' ' + @TABLE
SET @SQL = @SQL +' ' + 'WHERE ID =' +' ' + @LINKValue
PRINT @SQL -- SEE Here This is what you actually Want
--EXEC (@SQL) --Then Execute this
END
在我的 SQL 数据库中,我想制作一个通用软件 link table。也许类似于以下内容:
create table soft_link(
id uniqueidentifier,
name varchar(255),
LINK uniqueidentifier,
TABLE varchar(255),
primary key(id));
假设我在数据库中的其他 table 中有对象 "b_object"。 LINK 列将是 b_object 的唯一标识符,而 TABLE 将是 table,其中 b_object 存储在数据库中。
现在我想制作一个存储过程"sp_ResolveSoftLink"。此方法将获取软 link 的 id,查找软 link 的 LINK 和 TABLE 列,然后使用 TABLE 和 LINK 查询 b_object.
以下是不正确的 SQL 语法,但希望它有助于说明我的问题。我想将这两个查询组合成一个存储过程和 return 第二个查询的结果:
select LINK, TABLE from soft_link where id = xxxxxx
select * from TABLE where id = LINK
-- return the result of the second select query
基本问题: How/can 我使用来自一个查询的 varchar return 在 SQL 中的同一存储过程中形成另一个查询?
您可以像这样创建一个存储过程。
这里,首先你必须将LINK和Table的值存储在变量中,然后使用这些变量形成另一个动态查询
CREATE PROC spName
@id INT
AS
BEGIN
Declare @LINKValue uniqueidentifier, @TABLE varchar(255),@SQL varchar(max)
SELECT @LINKValue = LINK , @TABLE = TABLE
FROM soft_link
WHERE soft_link id = @id
SET @SQL='SELECT * FROM';
SET @SQL = @SQL +' ' + @TABLE
SET @SQL = @SQL +' ' + 'WHERE ID =' +' ' + @LINKValue
PRINT @SQL -- SEE Here This is what you actually Want
--EXEC (@SQL) --Then Execute this
END