Stored procedures in SQL Server Errors Unsolved -
create function chi_x2 ( @a1 int, @b1 int, @a2 int, @b2 int ) returns int begin -- declare return variable here declare @result int declare @tr1 int; declare @tr2 int; declare @tc1 int; declare @tc2 int; declare @ca1 int; declare @ca2 int; declare @cb1 int; declare @cb2 int; declare @xi int; declare @nt int; create procedure [dbo].[pro1] begin set @tr1 = @a1+@b1 set @tr2 = @a2+@b2 set @tc1 = @a1+@a2 set @tc2 = @b1+@b2 set @nt = @tr1+@tr2 set @ca1 =(@tc1/@nt*@tr1) set @ca2 =(@tc1/@nt*@tr2) set @cb1 =(@tc2/@nt*@tr1) set @cb2 =(@tc2/@nt*@tr2) set @xi =((power((@a1 -@ca1),2)/@ca1)+(power((@a2 -@ca2),2)/@ca2)+(power((@b1-@cb1),2)/@cb1)+(power((@b2 -@cb2),2)/@cb2)) -- add t-sql statements compute return value here select @result = @xi -- return result of function return @result --end chi_x2 create procedure [dbo].[pro2] begin declare @max_chi int declare @maxpos int declare @n int declare @swv_cur_out_sessionnumber varchar(255) declare @swv_cur_out_sessioncount varchar(255) declare @swv_cur_out_timespent varchar(255) declare @swv_cursor_var1 cursor declare @swv_cur_in_sessionnumber varchar(255) declare @swv_cur_in_sessioncount varchar(255) declare @swv_cur_in_timespent varchar(255) delete ch_table commit set @swv_cursor_var1 = cursor select sessionnumber, sessioncount, timespent clusters order sessionnumber asc open @swv_cursor_var1 fetch next @swv_cursor_var1 @swv_cur_out_sessionnumber,@swv_cur_out_sessioncount,@swv_cur_out_timespent while @@fetch_status = 0 begin set @max_chi = -999 set @maxpos = null set @swv_cursor_var1 = cursor select sessionnumber, sessioncount, timespent clusters order sessionnumber asc open @swv_cursor_var1 fetch next @swv_cursor_var1 @swv_cur_in_sessionnumber,@swv_cur_in_sessioncount,@swv_cur_in_timespent while @@fetch_status = 0 begin select @n = count(*) from(select x1 x ch_table union select x2 ch_table) tabal x = @swv_cur_out_sessionnumber or x = @swv_cur_in_sessionnumber if @n = 0 begin -- set @xi = round(chi_x2(cur_out.sessioncount,cur_out.timespent,cur_in.sessioncount,cur_in.timespent),2) if @xi > @max_chi begin set @max_chi = @xi set @maxpos = cur_in.sessionnumber end end fetch next @swv_cursor_var1 @swv_cur_in_sessionnumber,@swv_cur_in_sessioncount,@swv_cur_in_timespent end if @max_chi > -999 begin insert ch_table(sno, p, t) values(cur_out.sessionnumber, @maxpos, @max_chi) commit end close @swv_cursor_var1 fetch next @swv_cursor_var1 @swv_cur_out_sessionnumber,@swv_cur_out_sessioncount,@swv_cur_out_timespent end close @swv_cursor_var1 end
i come mysql background, , have began migrating sql server.
i can't, life of me, find example of stored procedure following in sql server: - multi-lined - contains both input , output parameters - sets 1 of output parameters within stored procedure
can provide insight? i.e. why following not work?
msg 156, level 15, state 1, procedure chi_x2, line 31
incorrect syntax near keyword 'procedure'.nsg 156, level 15, state 1, procedure chi_x2, line 56
incorrect syntax near keyword 'procedure'.msg 102, level 15, state 1, procedure chi_x2, line 112 incorrect syntax near 'end'.
thanks in advance!
sure, here's basic introduction ouptput parameters.
here's short , sweet of it. note output
keyword on output parameter:
create procedure dbo.uspmyproc @someparameter varchar(10), @theoutputparameter varchar output -- stuff select @theoutputparameter = somecolumn -- or set @theoutputparameter = someresult return
Comments
Post a Comment