簡體   English   中英

如何在存儲過程中編寫帶有動態表名稱的Select查詢?

[英]How to write Select query with dynamic table name in Stored Procedure?

我正在寫一個存儲過程。 但是表名在此過程中是動態的。 我想從變量表中獲取行號。 但是我@rownumber在哪里設置@rownumber並返回選擇查詢?

Create Proc update_eMail
    (@tablename nvarchar(50),
     @columnname nvarchar(50))
AS
Begin 

    Declare @q_getrowNumber NVARCHAR(MAX)
    Declare @rownumber int
    SELECT @rownumber =  Count(ID) FROM  quotename(@tablename) // doesnt work

END

提前致謝

這是使用動態sql實現目標的一種方法

declare @sql NVARCHAR(4000)= ''

set @sql = 'SELECT @rownumber = Count(ID) FROM '+ quotename(@tablename) 

exec sp_executesql @sql, N'@rownumber int output',@rownumber output

您為動態查詢寫了錯誤的過程試試看。 它會工作。

ALTER PROC update_eMail(@tablename NVARCHAR(50))
AS
BEGIN 
DECLARE @RowNumber NVARCHAR(MAX)=''

  set @RowNumber='select Count(ID) FROM '+@tablename+''
  exec(@RowNumber)
END

或在查詢中嘗試以下代碼

ALTER PROC update_eMail1
(
   @tablename NVARCHAR(50)
)
AS
BEGIN
     DECLARE @sql NVARCHAR(4000)= '',@rownumber INT
     SET @sql = 'SELECT @rownumber = Count(ID) FROM '+quotename(@tablename) 

   EXEC sp_executesql @sql, N'@rownumber int output',@rownumber OUTPUT

   SELECT @rownumber

END

這對您來說最簡單:

Create Proc update_eMail
    @tablename nvarchar(50)
AS
Begin 
    EXEC ( 'SELECT Count(ID) FROM '+@tablename+'')
END

暫無
暫無

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

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