看来我还是没有说清楚。 下面在说一个例子 select @aaa = 'dddd' ---1 select * from t1 where cc =@aaa ---2 诸如此类。 不知道有解否。
select @aaa = 'dddd' 修改为 set @aaa = 'dddd'
如果是变量到无所谓,按楼上的说。 如果我第一个select字句要形成一个虚表该如何做?
select * into 新表 from 表
我的语句详细如下 select * into tmpa from table1 select * from table2 left join tmpa on tmpa.a = table2.b 在sql server的查询分析器中调用此存储过程没有什么问题,能够返回结果集, 但我在vb中始终得不到结果, 我试着修改过存储过程中如果只有一个select字句是能够返回的,说明我在vb中的代码并没有问题。 如果把两个select语句合并,我相信也能够解决,但现在的问题是合并起来可能非常麻烦。 请问这个问题是否有解,如没有解我也只能另找别路了。 多谢。
× \
你有没有 SET NOCOUNT ON
没关系,它会返回最后一个select语句。
liujianjun_(流星尔) 在vb中,执行后,自动返回后一条select
select @aaa = 'dddd' ---1 select * from t1 where cc =@aaa ---2select 在1中是赋值,相当于set,在2中才是返回一个记录集,所以肯定也只会返回2的结果,不会返回1
select * into tmpa from table1 select * from table2 left join tmpa on tmpa.a = table2.b ------------------------------------------------------------ 上述语句只能执行一次,再执行会保错,因为产生的tmpa是实表。 可以改为产生临时表: select * into #tmpa from table1 select * from table2 left join #tmpa on #tmpa.a = table2.b ------------------------------------------------------------ 但从效率考虑,应该这样更好: select * from table2 left join table1 on table1.a = table2.b or select * from table2 left join (select somecolumns... from table1) a on a.a = table2.b
综合楼上各位,加上我自己的实验,得出结论: 如果使用多个select 语句,其中没有into 子句的话,vb调用存储过程返回的是最后一个select 的结果, 如果有into字句,则vb调用存储过程后将不能得到resordset,这时要打开set nocount on. 感谢。
我试过合并两个select,但基本上很难。
在sp内部根据parameter来做判断,以便输出对应的结果
下面在说一个例子
select @aaa = 'dddd' ---1
select * from t1 where cc =@aaa ---2
诸如此类。
不知道有解否。
如果我第一个select字句要形成一个虚表该如何做?
select * into tmpa from table1
select * from table2 left join tmpa on tmpa.a = table2.b
在sql server的查询分析器中调用此存储过程没有什么问题,能够返回结果集,
但我在vb中始终得不到结果,
我试着修改过存储过程中如果只有一个select字句是能够返回的,说明我在vb中的代码并没有问题。
如果把两个select语句合并,我相信也能够解决,但现在的问题是合并起来可能非常麻烦。
请问这个问题是否有解,如没有解我也只能另找别路了。
多谢。
× \
在vb中,执行后,自动返回后一条select
select * from t1 where cc =@aaa ---2select 在1中是赋值,相当于set,在2中才是返回一个记录集,所以肯定也只会返回2的结果,不会返回1
select * from table2 left join tmpa on tmpa.a = table2.b
------------------------------------------------------------
上述语句只能执行一次,再执行会保错,因为产生的tmpa是实表。
可以改为产生临时表:
select * into #tmpa from table1
select * from table2 left join #tmpa on #tmpa.a = table2.b
------------------------------------------------------------
但从效率考虑,应该这样更好:
select * from table2 left join table1 on table1.a = table2.b
or
select * from table2 left join (select somecolumns... from table1) a on a.a = table2.b
如果使用多个select 语句,其中没有into 子句的话,vb调用存储过程返回的是最后一个select 的结果,
如果有into字句,则vb调用存储过程后将不能得到resordset,这时要打开set nocount on.
感谢。