SQL中declare用法

风一样的大叔 2012-01-05 01:15:41
            var strSQL = new StringBuilder();
strSQL.Append("declare @rodno varchar(50) ");
strSQL.Append("set @rodno = @GetRod ");
strSQL.Append("SELECT 'aaa' AS Type,a.rodNO as RodNO,a.starttime AS Starttime,b.endtime AS Endtime ");
strSQL.Append("FROM PRO_COREVAD_BEGIN a,PRO_COREVAD_END b ");
strSQL.Append("WHERE a.rodNO=@rodno ");
strSQL.Append("AND a.rodNO=b.rodNO ");
strSQL.Append("union ");
strSQL.Append("SELECT 'bbb' AS Type,a.rodNO,a.starttime,b.endtime ");
strSQL.Append("FROM PRO_Coresinter_BEGIN a,PRO_Coresinter_END b ");
strSQL.Append("WHERE a.rodNO LIKE (@rodno+'%') ");
strSQL.Append("AND a.rodNO=b.rodNO ");
strSQL.Append("union ");
strSQL.Append("SELECT 'ccc' AS Type,c.rodNo,a.starttime,b.endtime ");
strSQL.Append("FROM PRO_CoreVacuumdegass_BEGIN a,PRO_CoreVacuumdegass_END b,PRO_CoreVacuumdegass_BatchInfo c ");
strSQL.Append("WHERE c.rodNO LIKE (@rodno+'%') ");
strSQL.Append("AND a.batchid=b.batchid AND a.batchid=c.batchid AND c.batchid = (SELECT MAX(batchid) ");
strSQL.Append("FROM PRO_CoreVacuumdegass_BatchInfo ");
strSQL.Append("WHERE rodNo LIKE (@rodno+'%')) --ddd");
SqlParameter[] parameters = {
new SqlParameter("@GetRod", SqlDbType.VarChar,50)
};
parameters[0].Value = rodno;
var ds = SQLHelper.GetDs(strSQL.ToString(), parameters);
我想用一个@GetRod值给SQL里面所有的@rodno赋值,但是返回的数据库只有一行数据,求解释
...全文
21676 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Bj_junxia 2012-09-07
  • 打赏
  • 举报
回复 1
还是没能解决我的问题
风一样的大叔 2012-01-05
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 gggscfaii 的回复:]

strb.Append("declare @x int ");
strb.Append("set @x=@y ");
strb.Append("select * from (select 3 b Union all ");
strb.Append("select 3 Union all ");
……
[/Quote]我就是在SQL中运行后再写出代码的,在sql server中有17行数据,但是写成代码之后只有1行了,第一行运行了,其他都没运行
yhnujm##33 2012-01-05
  • 打赏
  • 举报
回复
strb.Append("declare @x int ");
strb.Append("set @x=@y ");
strb.Append("select * from (select 3 b Union all ");
strb.Append("select 3 Union all ");
strb.Append("select 3 Union all ");
strb.Append("select 3 Union all ");
strb.Append("select 3 Union all ");
strb.Append("select 3 Union all ");
strb.Append("select 3 Union all ");
strb.Append("select 3 Union all ");
strb.Append("select 3 Union all ");
strb.Append("select 4 Union all ");
strb.Append("select 3 Union all ");
strb.Append("select 3 Union all ");
strb.Append("select 3 Union all ");
strb.Append("select 3 Union all ");
strb.Append("select 5 Union all ");
strb.Append("select 3 Union all ");
strb.Append("select 3 Union all ");
strb.Append("select 3 Union all ");
strb.Append("select 6 Union all ");
strb.Append("select 7 ) a where b=@x ");

GridView1.DataSource= DbManagerSQL.Query(strb.ToString(), new SqlParameter[] { new SqlParameter("@y",3) });
GridView1.DataBind();
测试了,不是delcare的问题,是你的查询语句逻辑问题,可将SQL语句放在SqlServer执行一下
风一样的大叔 2012-01-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lovesongforever 的回复:]

你这写法你自己看着难受不?
为什么不在数据写好存储过程然后用程序传参调用呢!
[/Quote]我也是这么想的,用存储过程写好了,呵呵
garfieldzf 2012-01-05
  • 打赏
  • 举报
回复
你这写法你自己看着难受不?
为什么不在数据写好存储过程然后用程序传参调用呢!
风一样的大叔 2012-01-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sz_haitao 的回复:]

如果都是sql的变量
则必须decalre过的
看你的需求,好像@getrod是一次性接受程序的值给sql
拼凑一下就行了,不用专门@getrod
[/Quote]我原来也是这么写的,但貌似只查出了第一个sql的值,后面都木有值啊
haitao 2012-01-05
  • 打赏
  • 举报
回复
如果都是sql的变量
则必须decalre过的
看你的需求,好像@getrod是一次性接受程序的值给sql
拼凑一下就行了,不用专门@getrod
风一样的大叔 2012-01-05
  • 打赏
  • 举报
回复
@GetRod,@rodno都是我自己定义的,由于好多地方用到了@rodno,我想用一个值来给所有的@rodno赋值,希望用到参数化的方法
haitao 2012-01-05
  • 打赏
  • 举报
回复
@GetRod 是程序的参数?
delphi的sql参数好像是 :参数名
这样拼凑应该可以吧:
strSQL.Append("set @rodno = "+rodno+" ");

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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