create proc report(@a,@b,@c,@d) as DECLARE @F exec proc_b '1', '2', '3', @F out --1: declare cur scroll cursor for select a,b,c,d,@f from table where a=@a and b=@b
好像有点眉目了! 又出现一个新问题: declare @f varchar(2000) delcare f_c scroll cursor for select c from tmp_t group by c if @@cursor_rows>0 begin set @i=1 while @i<=@cursor_rows begin fetch next .... exec porc_x @a,@b,@c,@d=@d output update tmp_t set f=@f where c=@c set @i=@i+1 end end close ......为什么执行exec.....这两句话的时候不能循环? 找成别的比如select @i,@c 就能正常循环? 真是搞不懂这sqlserver是怎么搞的!!!!!!!
并且还要取回反回值!!!!!!!!!
select @a,@b,dbo.myfunc('1','2','3') from table1create fucntion myfucn()
returns int(可以返回一个表类型table, 再把@a,@b插入进去作为视图)
as
...//c=proc '1','2','3'三个参数返回一个值吗?
把要求写清楚,总有办法
2、看不明白你的视图是怎么样的。
AS
declare @a char(10), @b char(10), @c char(10), @sql varchar(200)
exec proc_b '1', '2', '3', @c out --先执行另一个存储过程并返回结果@c
select @a = 'field1'
select @b = 'field2'
select @sql = 'create view x(a,b,c) as select ' + @a + ','
+ @b +',' + @c + ' from tablename'
exec(@sql)
创建视图我是用动态sql语句生成的,这个没问题。
hycao(海草)
这样的话可能又得用到嵌套了,在vc里执行不能通过!
exec proc_b '1', '2', '3', @c out --先执行另一个存储过程并返回结果@c
^^^^^^^^
@c out这地方要在存储过程中指明并用return 吗?
DECLARE @F
exec proc_b '1', '2', '3', @F out
--1:
declare cur scroll cursor for
select a,b,c,d,@f from table where a=@a and b=@b
按你所说的,proc_b是不是应该有四个参数?
然后在存储过程中return @f
????
可是如果用return则将varchar值转换为int的列时发生语法错误?
请指教
create proc test
as
select * from authors;
go
这个结果集就作为返回值返回了。
高手请指教!!!!!!!!!!!!!!!!
一直搞不懂为什么带有游标嵌套的存储过程在查询分析器里执行好好的,到vc里去执行结果就是莫名其妙的!百思不得其解,这个问题已经困忧我两天了,急!
@ .. OUTPUT
@f=...
return
调用时,用本地变量 后加OUTPUT
exec @c=proc '1','2','3'create view x(a,b,c)as
select @a,@b,@c这样执行就可以
decluare @f varchar(2000) output
????不能在decluare语句中使用output选项
create proce p(@f varchar(2000) output)
return ---->>好像并不能返回结果?
return @f ---->>>>varchar值转换为int列时语法错误
// SELECT au_lname FROM pubs.dbo.authors
// SELECT @OutParm = 88
// RETURN 99
declare @f varchar(2000)
exec testparm(@f)
// SELECT @OutParm = ...
// RETURN 99
declare @f varchar(2000)
exec testparm(@f)
exec @f=proca(@a,@b,@c,@d)
....
----
create proce proca(@a varchar(10),@b varchar(10),@c varchar(10),@d varchar(2000) output) as .....
set @d=@....
return
---
我发现返回值都是零???????????怎么回事?
头都大了哦
按你的说法返回来是null
// CREATE PROCEDURE TestParm @OutParm varchar(2000) OUTPUT AS
// SELECT @OutParm = ... <<<<<<<<<这句话好像没没有返回值到存储过程中,到是在查询分析器里有反应,我update的时候得到的值是null
// RETURN 99 <<<<<<<<99 是什么意思?
declare @f varchar(2000)
exec testparm(@f) <<<<<<<<好像不能用()包含进去吧
写错了 exec testparm @f=@OutParm OUTPUT
又出现一个新问题:
declare @f varchar(2000)
delcare f_c scroll cursor for
select c from tmp_t group by c
if @@cursor_rows>0
begin
set @i=1
while @i<=@cursor_rows
begin
fetch next ....
exec porc_x @a,@b,@c,@d=@d output
update tmp_t set f=@f where c=@c
set @i=@i+1
end
end
close ......为什么执行exec.....这两句话的时候不能循环?
找成别的比如select @i,@c
就能正常循环?
真是搞不懂这sqlserver是怎么搞的!!!!!!!