22,210
社区成员
发帖
与我相关
我的任务
分享
ALTER PROC dbo.protest
@Parameters NVARCHAR(MAX) , --参数都写在这里
@type INT
AS
BEGIN
DECLARE @sql NVARCHAR(100)
IF @type = 1
BEGIN
DECLARE @id INT
SET @id = CONVERT(INT, @Parameters) --type是1直接写死
SET @sql = 'select @id as id' --这里的sql语句是从数据库中读取出来的
EXEC sp_executesql @sql, N'@id int ', @id
END
IF @type = 2
BEGIN
DECLARE @id2 INT ,
@name NVARCHAR(100)
SET @id2 = (SELECT value FROM dbo.F_Split(@Parameters,',') WHERE id=1)
SET @name = (SELECT value FROM dbo.F_Split(@Parameters,',') WHERE id=2)
SET @sql = 'select @id2 as id,@name as name'
EXEC sp_executesql @sql, N'@id2 int,@name NVARCHAR(100) ',
@id2, @name
END
END
GO
EXEC dbo.protest @Parameters = N'11',
@type = 1
EXEC dbo.protest @Parameters = N'1,测试姓名',
@type = 2
CREATE PROC dbo.protest @id INT
AS
BEGIN
DECLARE @sql NVARCHAR(100)
SET @sql = 'select @id as id' --这里的sql语句是从数据库中读取出来的
EXEC sp_executesql @sql, N'@id int ', @id
END
GO
参数这样传入:
SqlCommand command = new SqlCommand();
command.Connection = sqlCnt;
command.CommandType = System.Data.CommandType.StoredProcedure;
command.CommandText = "protest";
command.Parameters.Add("@ID", SqlDbType.Int);
command.Parameters["@ID"].Value = 1;
SqlDataReader reader = command.ExecuteReader();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "select count(id) from aaaaa where id=@id";
cmd.Parameters.Add("@id", SqlDbType.Int);
cmd.Parameters["@id"].Value = 1;
DECLARE @sql NVARCHAR(100)
SET @sql = 'select @id'
EXEC sp_executesql @sql, N'@id int ', 1