带返回值的存储过程和游标循环
来源:互联网 发布:java定义常量的关键字 编辑:程序博客网 时间:2024/06/04 19:05
CREATE PROC p_voucher_setsql
@vouchertype varchar(20),
@jd VARCHAR(20),
@accountnum VARCHAR(20),
@sql_out varchar(MAX) out
AS
begin
/***
DECLARE @sql_out VARCHAR(MAX) = ''
EXEC p_voucher_setsql 'ACC','借','10001',@sql_out output
print @sql_out
***/
--借
DECLARE @col VARCHAR(30),@col_rel VARCHAR(500),@coltype VARCHAR(20)
DECLARE @sql VARCHAR(MAX) = '',@ins_sql VARCHAR(MAX) = ''
DECLARE @frosql VARCHAR(MAX),@whersql VARCHAR(MAX),@groupsql varchar(200)
SELECT @frosql = frosql,@whersql = whersql,@groupsql = groupby
FROM dbo.d_u8voucher_set WHERE vouchertype = 'ACC'
declare B_Cursor cursor for select col,col_rel,coltype FROM dbo.d_u8voucher_rel WHERE jd = @jd AND vouchertype = @vouchertype AND accountnum = @accountnum
open B_Cursor;
fetch next from B_Cursor into @col ,@col_rel,@coltype
while @@FETCH_STATUS =0
BEGIN
SET @ins_sql = @ins_sql + @col + ','
SET @sql = @sql + @col_rel + ' as ' + @col + ','
fetch next from B_Cursor into @col ,@col_rel,@coltype
end
close B_Cursor;
deallocate B_Cursor;
SET @sql = LEFT(@sql,LEN(@sql) - 1 )
SET @ins_sql = LEFT(@ins_sql,LEN(@ins_sql) -1 ) + ')'
SET @ins_sql = 'insert into d_u8voucher_list (' + @ins_sql + CHAR(13)
SET @sql = 'select ' + @sql + ' ' + CHAR(13) + @frosql + ' ' + @whersql + ' ' + @groupsql
SET @sql_out = @ins_sql + @sql
END
@vouchertype varchar(20),
@jd VARCHAR(20),
@accountnum VARCHAR(20),
@sql_out varchar(MAX) out
AS
begin
/***
DECLARE @sql_out VARCHAR(MAX) = ''
EXEC p_voucher_setsql 'ACC','借','10001',@sql_out output
print @sql_out
***/
--借
DECLARE @col VARCHAR(30),@col_rel VARCHAR(500),@coltype VARCHAR(20)
DECLARE @sql VARCHAR(MAX) = '',@ins_sql VARCHAR(MAX) = ''
DECLARE @frosql VARCHAR(MAX),@whersql VARCHAR(MAX),@groupsql varchar(200)
SELECT @frosql = frosql,@whersql = whersql,@groupsql = groupby
FROM dbo.d_u8voucher_set WHERE vouchertype = 'ACC'
declare B_Cursor cursor for select col,col_rel,coltype FROM dbo.d_u8voucher_rel WHERE jd = @jd AND vouchertype = @vouchertype AND accountnum = @accountnum
open B_Cursor;
fetch next from B_Cursor into @col ,@col_rel,@coltype
while @@FETCH_STATUS =0
BEGIN
SET @ins_sql = @ins_sql + @col + ','
SET @sql = @sql + @col_rel + ' as ' + @col + ','
fetch next from B_Cursor into @col ,@col_rel,@coltype
end
close B_Cursor;
deallocate B_Cursor;
SET @sql = LEFT(@sql,LEN(@sql) - 1 )
SET @ins_sql = LEFT(@ins_sql,LEN(@ins_sql) -1 ) + ')'
SET @ins_sql = 'insert into d_u8voucher_list (' + @ins_sql + CHAR(13)
SET @sql = 'select ' + @sql + ' ' + CHAR(13) + @frosql + ' ' + @whersql + ' ' + @groupsql
SET @sql_out = @ins_sql + @sql
END
阅读全文
0 0
- 带返回值的存储过程和游标循环
- VBA调用带游标返回值的ORACLE存储过程
- JAVA调用ORACLE带数组输入参数和返回游标结果集的存储过程
- 带游标的存储过程
- 带游标的存储过程
- ORACLE存储过程的游标和for循环
- MYSQL存储过程,while循环和游标的嵌套使用
- 基于MySQL游标和存储过程的循环插入
- 存储过程 带游标
- 存储过程返回游标
- 存储过程返回游标
- 调用带 返回值 的存储过程
- 带返回值的存储过程
- 执行 带 返回值 的 存储过程
- oracle带返回值的存储过程
- 带游标的存储过程的使用
- Oracle存储过程返回带参数游标方法汇总
- SQL Server带游标的存储过程
- VirtualBox 不能创建64位虚拟机及启动错误的原因与解决方法
- 【MySQL笔记】SQL基本语法
- 袖珍世界
- 虚拟机配置静态 IP 以后无法连接的解决办法
- 1.项目简介
- 带返回值的存储过程和游标循环
- 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{
- VB封装DLL并调用
- android studio 快捷键的使用
- html5 canvas clock 时钟效果
- STL
- DAJIHAO
- 第一次开通博客纪念一下
- ActiveMQ集成spring