簡體   English   中英

SQL列值到表名

[英]SQL column value to table name

在我的SQL數據庫中,我想創建一個通用的軟鏈接表。 也許類似以下內容:

create table soft_link(
  id uniqueidentifier, 
  name varchar(255),
  LINK uniqueidentifier,
  TABLE varchar(255),
  primary key(id));

說我在數據庫的其他一些表中有對象“ b_object”。 LINK列將是b_object的唯一標識符,而TABLE將是將b_object存儲在數據庫中的表。

現在,我要制作一個存儲過程“ sp_ResolveSoftLink”。 此方法將獲取軟鏈接的ID,查找該軟鏈接的LINK和TABLE列,然后使用TABLE和LINK查詢b_object。

以下是不正確的SQL語法,但希望它有助於說明我的問題。 我想將這兩個查詢合並到一個存儲過程中,並返回第二個查詢的結果:

select LINK, TABLE from soft_link where id = xxxxxx
select * from TABLE where id = LINK
-- return the result of the second select query

基本問題:如何/可以使用一個查詢的varchar返回值在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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM