我做了这个程序..
ALTER PROCEDURE [dbo].[MyProcedure]
@pSelect nvarchar
AS
BEGIN
SET NOCOUNT ON;
select @pSelect from tabel1
END
Run Code Online (Sandbox Code Playgroud)
我想将一个选择查询从c#代码传递给此存储过程
MyProcedure("column1,column2");
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做,因为存储过程将我的参数视为一个字符串,它的行为就像
select N'column1,column2' from tabel1
Run Code Online (Sandbox Code Playgroud)
请帮助我
或者为此提供更好的选择
The*_*heQ 11
您必须在存储过程中使用动态sql.
ALTER PROCEDURE [dbo].[MyProcedure]
@pSelect nvarchar(max)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @SQL nvarchar(max)
SET @SQL = 'select ' + @pSelect + ' from tabel1';
EXEC (@SQL)
END
Run Code Online (Sandbox Code Playgroud)
这是一个测试上述存储过程的脚本:
CREATE TABLE tabel1 (id int, data varchar(50))
INSERT INTO tabel1 VALUES(1,'aaa'),(2,'bbb'),(3,'ccc')
EXEC [dbo].[MyProcedure] 'id'
EXEC [dbo].[MyProcedure] 'data'
EXEC [dbo].[MyProcedure] 'id,data'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11919 次 |
| 最近记录: |