寻找动态存储过程,用于多个查询[重复]。

问题描述 投票:0回答:1

我想设计一个动态存储过程,我将传递列名、表名和我的where子句。这样我就可以使用存储过程在不同的表上用不同的参数进行选择。

我不知道这是否可行。如果可以,任何人都可以用例子来帮助我。

例如

查询1:查询1。Select name, number, total into out_name, out_number, out_total from student where total > 100;

查询2: select book into out_book from lib where cost > 100;

我应该能够在单一存储过程中执行上述查询,通过传入... column, tablewhere 子句。

我创建了像下面这样的东西。我做了类似这样的删除,删除工作正常。

SET V_SELECT =                                         
  'SELECT ' || SELECT_FIELDS ||                        
  ' FROM '  || TABLE_NAME    ||                        
  ' WHERE ' || WHERE_CLAUSE  ||                        
  ' WITH UR';                                          

  EXECUTE IMMEDIATE V_SELECT INTO || INTO_FIELDS   ||;
sql-server stored-procedures dynamic cobol
1个回答
-1
投票
CREATE PROCEDURE usp_DynamicProc
(
    @SelectFields NVARCHAR(1024)
    , @IntoTableName NVARCHAR(255)
    , @TableName NVARCHAR(255)
    , @WhereClause NVARCHAR(1024)
)
AS
DECLARE @SQL NVARCHAR(MAX)
SELECT @SQL = 'SELECT ' + @SelectFields + ISNULL(' INTO ' + @IntoTableName,'') + ' FROM ' + @TableName + ' WHERE ' + @WhereClause
EXEC sp_executesql @SQL
© www.soinside.com 2019 - 2024. All rights reserved.