请问mysql存储过程中多个动态sql语句该怎么写,第二个动态语句要用第一个动态语句的值 该怎么调用?
4个回答
展开全部
declare @d1 datetime
set @d1 = '2009-12-31'
select dateadd(year,-1,@d1) as 上一年同一天的日期
set @d1 = '2009-12-31'
select dateadd(year,-1,@d1) as 上一年同一天的日期
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
给你个参考,试试吧
set @sql_1 = " select * from .......limit ? ";
prepare stmt from @sql_1;
execute stmt using @step; ##你传递的参数,多个参数一块加上
deallocate prepare stmt;
commit;
set @sql_1 = " select * from .......limit ? ";
prepare stmt from @sql_1;
execute stmt using @step; ##你传递的参数,多个参数一块加上
deallocate prepare stmt;
commit;
更多追问追答
追问
第二个动态语句要用第一个动态语句的值
追答
给你个参考,试试吧
set @sql_1 = " select * from .......limit ? ";
prepare stmt from @sql_1;
execute stmt using @step; ##你传递的参数,多个参数一块加上
deallocate prepare stmt;
commit;
追问第二个动态语句要用第一个动态语句的值
先把第一个动态语句的值赋予一个变量,之后再传给第二个动态语句啊
上面例子中@step,就是一个变量,
你可以根据需要,多加基层循环或判断
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
SQL> DECLARE
2 TYPE refcursor IS REF CURSOR;
3 v_cursor REFCURSOR;
4 v_Sql VARCHAR(200);
5 v_name VARCHAR(10);
6 BEGIN
7 -- 动态SQL
8 v_Sql := 'SELECT name FROM test_dysql';
9 -- 打开游标.
10 OPEN v_cursor FOR v_SQL;
11 -- 循环处理.
12 LOOP
13 -- 填充数据.
14 FETCH v_cursor INTO v_name;
15 -- 无数据时 退出循环.
16 EXIT WHEN v_cursor%NOTFOUND;
17 -- 输出.
18 dbms_output.put_line(v_name);
19 END LOOP;
20 -- 关闭游标.
21 CLOSE v_cursor;
22 EXCEPTION
23 WHEN OTHERS THEN
24 -- 发生异常时,如果游标还打开,那么关闭掉.
25 IF (v_cursor%isopen) THEN
26 CLOSE v_cursor;
27 END IF;
28 RAISE;
29 END;
30 /
A
B
C
D
E
PL/SQL procedure successfully completed.
2 TYPE refcursor IS REF CURSOR;
3 v_cursor REFCURSOR;
4 v_Sql VARCHAR(200);
5 v_name VARCHAR(10);
6 BEGIN
7 -- 动态SQL
8 v_Sql := 'SELECT name FROM test_dysql';
9 -- 打开游标.
10 OPEN v_cursor FOR v_SQL;
11 -- 循环处理.
12 LOOP
13 -- 填充数据.
14 FETCH v_cursor INTO v_name;
15 -- 无数据时 退出循环.
16 EXIT WHEN v_cursor%NOTFOUND;
17 -- 输出.
18 dbms_output.put_line(v_name);
19 END LOOP;
20 -- 关闭游标.
21 CLOSE v_cursor;
22 EXCEPTION
23 WHEN OTHERS THEN
24 -- 发生异常时,如果游标还打开,那么关闭掉.
25 IF (v_cursor%isopen) THEN
26 CLOSE v_cursor;
27 END IF;
28 RAISE;
29 END;
30 /
A
B
C
D
E
PL/SQL procedure successfully completed.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询