Sql server 如何传递参数以动态运行并动态执行存储过程
现在我有两个问题要问Sql server 如何传递参数以动态运行并动态执行存储过程,sql-server,sql-server-2008,function,stored-procedures,Sql Server,Sql Server 2008,Function,Stored Procedures,现在我有两个问题要问 如果在调用函数之前参数数量未知,如何将参数传递给该函数?(SQL Server 2008) 如何在函数和返回表中动态执行存储过程 为了让问题更清楚,我添加了一小段代码,用于调用C中的方法,在调用函数之前,参数的数量是未知的。请原谅 public void DemoFunction(string name,params string[] list) { for (int i = 0; i < list.Length; i++) { //
C
中的方法,在调用函数之前,参数的数量是未知的。请原谅
public void DemoFunction(string name,params string[] list)
{
for (int i = 0; i < list.Length; i++)
{
// Do whatever we want
}
}
问题1
我能否在Sql Server函数中定义动态参数,就像我在上面给出的代码(params string[]list
)一样
问题2
- 要执行的
的名称将传递到此存储过程
函数
- 执行
的参数将被传递到此存储过程
,但应是动态的(如问题1所示)函数
- 我需要执行
,该过程在存储过程
中作为参数动态传递到此函数,并将结果作为表返回李>函数
- 在执行过程之前,列数未知的情况下,如何声明用于返回结果的表
-- Here the parameters should be dynamic as like params string[] list
CREATE FUNCTION [dbo].ExecStoredProc (@ProcName varchar(40),@Param1 INT,@Param2 VARCHAR(50))
RETURNS @ReturnTable TABLE
(
COLUMN1 INT
,COLUMN2 DATETIME
,COLUMN3 VARCHAR(50)
)
AS
BEGIN
-- Is it possible like SELECT * INTO @ReturnTable FROM(Exec @ProcName)?
INSERT INTO @ReturnTable
-- This should be dynamic including the number of parameters
Exec @ProcName 'Params'
RETURN
END
简言之
问题1
不,您不能像在C中那样在SQL中声明动态参数#
问题2
用户定义的函数中不允许使用EXEC。在函数中执行过程的唯一方法是调用CLR
用户定义的表值函数返回的表是静态的,并在return语句中声明。不能返回动态列
了解有关SQL用户定义函数的更多信息
希望有帮助
CREATE FUNCTION [dbo].ExecStoredProc ( @ProcName varchar(40),@Param1 INT,@Param2 VARCHAR(50))
(
....
....
....
)
-- Here the parameters should be dynamic as like params string[] list
CREATE FUNCTION [dbo].ExecStoredProc (@ProcName varchar(40),@Param1 INT,@Param2 VARCHAR(50))
RETURNS @ReturnTable TABLE
(
COLUMN1 INT
,COLUMN2 DATETIME
,COLUMN3 VARCHAR(50)
)
AS
BEGIN
-- Is it possible like SELECT * INTO @ReturnTable FROM(Exec @ProcName)?
INSERT INTO @ReturnTable
-- This should be dynamic including the number of parameters
Exec @ProcName 'Params'
RETURN
END