如何把参数传到数据库的存储过程中生成sql语句的执行?

chenhaoying 2005-05-30 06:14:47
三个变量@Code, @Item 和@Value
DECLARE @Sql NVarchar(4000)
SET @Sql=…………
EXEC (@Sql)
怎么根据参数生成sql语句,假如@Code='a', @Item='b' 和@Value ='dsa' ,则生成
select * from tb where code='a' and b like '%dsa%'执行啊。
...全文
231 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
xzq686 2005-06-01
  • 打赏
  • 举报
回复
--生成测试数据
--drop table tb
CREATE TABLE tb
(
Code varchar(20),
b varchar(20)
)

insert tb
select 'a','adsa' union
select 'a','aadsaa' union
select 'aa','aadsaa' union
select 'aa','aadsaa'

--drop procedure proc_select_example
CREATE PROCEDURE dbo.proc_select_example
@Code varchar(20),
@Item varchar(20),
@Value varchar(20)
AS

DECLARE @Sql NVarchar(4000)
set @sql='select * from tb where code=''' + @Code +''' and ' + @Item + ' like ''%' + @Value + '%'''
--print @sql
EXEC (@Sql)

GO

exec proc_select_example 'a','b','dsa'

--生成结果:
--
--code b
--a aadsaa
--a adsa

xzq686 2005-06-01
  • 打赏
  • 举报
回复
--生成测试数据
--drop table tb
CREATE TABLE tb
(
Code varchar(20),
b varchar(20)
)

insert tb
select 'a','adsa' union
select 'a','aadsaa' union
select 'aa','aadsaa' union
select 'aa','aadsaa'

--drop procedure proc_select_example
CREATE PROCEDURE dbo.proc_select_example
@Code varchar(20),
@Item varchar(20),
@Value varchar(20)
AS

DECLARE @Sql NVarchar(4000)
set @sql='select * from tb where code=''' + @Code +''' and ' + @Item + ' like ''%' + @Value + '%'''
--print @sql
EXEC (@Sql)

GO

exec proc_select_example 'a','b','dsa'

--生成结果:
--
--code b
--a aadsaa
--a adsa
ghchen 2005-06-01
  • 打赏
  • 举报
回复
set @sql='select * from tb where code=''' + @Code + ''' and ' + @Item + ' like ''%' + @Value + '%'''
chliang315 2005-06-01
  • 打赏
  • 举报
回复
Dim mobjOraConnection As New OracleConnection
Dim mobjOraCommand As New OracleCommand

Dim strSQL as String = "select * from tb where code=@Code and @Item like @Value "

mobjOraConnection.Open()

mobjOraCommand.Parameters.Add("@Code",SqlDbType.NVarChar,20,"Code");
mobjOraCommand.Parameters["@Code"].Value='a';
mobjOraCommand.Parameters.Add("@Item",SqlDbType.NVarChar,20,"Item");
mobjOraCommand.Parameters["@Item"].Value='b'
mobjOraCommand.Parameters.Add("@Value ",SqlDbType.NVarChar,20,"Value");
mobjOraCommand.Parameters["@Value"].Value='%dsa%';

....执行strSQL就行了。

mobjOraConnection.Close()
luckyprg 2005-06-01
  • 打赏
  • 举报
回复
或者改成这样:
set @sql='select * from tb where code=''' + @Code + ''' and ' + @Item + ' like ''%' + @Value + '%'''
aspme 2005-06-01
  • 打赏
  • 举报
回复
set @sql="select * from tb where code='" + @Code +" ' and ' "+ @Item +" ' like '%" + @Value + "%'"

如果是int类型的话就把''去掉,比如:'" + @Code +" ' 就要改成:" + @Code +"
zyug 2005-06-01
  • 打赏
  • 举报
回复
哈哈,我知道你的意思
你要把 '转义
xiedan79 2005-06-01
  • 打赏
  • 举报
回复
SqlConnection conn = new ......
conn.open();
SqlCommand comm = new SqlCommand("存储过程名",conn);
comm.CommandType = CommandType.StoredProcedure;
下面是定义存储过程返回值的参数

SqlParameter Param = new SqlParameter();
Param.ParameterName = "参数名";
Param.DbType = DbType.Int32;
Param.Size = 4;
Param.Direction = ParameterDirection.Output;

不返回值的参数就不用说了吧
njuzgj 2005-06-01
  • 打赏
  • 举报
回复
UP
luckyprg 2005-06-01
  • 打赏
  • 举报
回复
改成这样
set @sql='select * from tb where code=' + @Code + ' and ' + @Item + ' like ''%' + @Value + '%'''
like后面应该是两个单引号。
zyug 2005-06-01
  • 打赏
  • 举报
回复
set @sql='select * from tb where code=' + @Code + ' and ' + @Item + ' like %' + @Value + '%'
应该是这样吧
chenhaoying 2005-06-01
  • 打赏
  • 举报
回复
我是想在存储过程中生成的。
二楼的:
set @sql='select * from tb where code=' + @Code + ' and ' + @Item + ' like '''%' + @Value + '%'''
不知是少了个单引号还是多了,就是改不对。高手帮忙啊。
happyRose 2005-05-31
  • 打赏
  • 举报
回复
Dim myConnection As New sqlConnection
Dim myCommand As New sqlCommand

Dim strSQL as String = "select * from tb where code=@Code and @Item like @Value "

myConnection .Open()

myCommand .Parameters.Add("@Code","a")
myCommand .Parameters.Add("@Item","b")
myCommand .Parameters.Add("@Value ","%dsa%")

....执行strSQL就行了。

myConnection .Close()
renyu732 2005-05-30
  • 打赏
  • 举报
回复
接分.
cliff1002 2005-05-30
  • 打赏
  • 举报
回复
Dim mobjOraConnection As New OracleConnection
Dim mobjOraCommand As New OracleCommand

Dim strSQL as String = "select * from tb where code=@Code and @Item like @Value "

mobjOraConnection.Open()

mobjOraCommand.Parameters.Add("@Code","a")
mobjOraCommand.Parameters.Add("@Item","b")
mobjOraCommand.Parameters.Add("@Value ","%dsa%")

....执行strSQL就行了。

mobjOraConnection.Close()
ljf96345 2005-05-30
  • 打赏
  • 举报
回复
楼上, 正解!!!
fengfangfang 2005-05-30
  • 打赏
  • 举报
回复
set @sql='select * from tb where code=' + @Code + ' and ' + @Item + ' like '''%' + @Value + '%'''

62,266

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧