① 如何将ORACLE存储过程中sql的结果集打印出来,并且按照一定的格式封装到一个字符串中呢
这就用上了递归的思想,思路如下,没有你的数据如果有问题你调试下
V_SQL='select * from (
select REPLACE(SYS_CONNECT_BY_PATH(a,','),',') , LEVEL from (
SELECT OBJECT_ID || ''|''||
OBJECT_NAME || ''|''||
PHASE_ID || ''|''||
BUSI_TYPE || ''|''||
BUSI_NAME || ''|''||
BUSI_SUBCLASS_CODE || ''|''||
BUSI_SUBCLASS_NAME || ''|''||
BUSI_CLASSIFI_CODE || ''|''||
BUSI_CLASSIFI_NAME || ''|''||
BRAND_TYPE || ''|''||
CODE_NAME || ''|''||
RULER_OPTI || ''|''||
RULER_CENT || ''|''||
DONE_DATE || ''|''||'';'' a
FROM KH.KF_IVR_BUSI_CALCULATE S WHERE S.PHASE_ID=' || V_MONTH ||
' AND S.OBJECT_ID=' || V_OP_ID || ')
START WITH ROWNUM =1
CONNECT BY PRIOR rn +1= rn ORDER BY LEVEL DESC )
WHERE ROWNUM < 2 ';
② oracle存储过程如何输出信息
可用DBMS_OUTPUT.PUT_LINE()对存储过程的进行输出。
编写存储过程:
create or replace procere test_pro(in_num number)
as
M number;
begin
M := in_num;
if 0 < M then
dbms_output.put_line('输出SQL语句1');
elsif M < 3 then
dbms_output.put_line('输出SQL语句2');
else
dbms_output.put_line('nothing');
end if;
end;
(2)存储过程打印扩展阅读;
存储在数据库的数据字典中,存储在当前的应用中安全性由数据库提供安全保证,必须通过授权才能使用存储子程序,安全性靠应用程序来保证,如果能执行应用程序,就能执行该子程序。模式描述IN参数用来从调用环境中向存储过程传递值,不能给IN参数赋值,给此参数传递的值可以是常量、有值的变量、表达式等。
③ 在sql存储过程中Print如何来设置时间
如果是判断存储过程的运行时间,那么你@BeginTime2应该是在运行开始时,赋为当前日期值,在存储过程最后打印,实际基本可以判断出运行的分钟数了吧。
日期类型需要转换为字符串才能和字符串拼接
Convert(varchar(20),getdate(),20) 是日期转换字符串的转换函数其中最后的20是字符串格式化参数,比如Convert(varchar(20),getdate(),113),Convert(varchar(20),getdate(),120)都可以转换为不同格式的日期显示格式
Cast是强制类型转换,在这里是将int类型转换为字符串,使用方式举例:cast (123 as varchar) ,cast('2434' as int) 具体可以看看SQL帮助(查询分析器按F1)
Datediff是日期比较函数, 其中mi指两个时间的分钟差额,返回的是int类型,如果要拼到字符串中,也需要转换为字符串.datediff还可以判断相差的天数:
datediff(dd,'2010-12-25',getdate()) 年数、秒数等等,具体可以参考帮助和自己动手实验了。
④ 使用PL/SQL写存储过程,看不到打印出来的信息
如果你是PL/SQL的工具的话,使用‘SQL窗口’,结果在你执行SQL的小窗体的左上角有一个‘OutPut'窗体里面;
如果使用的命令行的话,你得先设置允许显示输出类似dbms_output,命令如下:
SQL>set serveroutput on;
⑤ 哪位高手知道 mysql 存储过程中 打印语句是什么
Mysql存储过程中没有打印语句,可以用select 来代替,比如:
select @var;
⑥ 如何可以打印(显示)出存储过程中的SQL字符串
你可以在他注释--print @sql那里加上一句
select @sql
在下面就可以看到sql语句了,不过你要设置栏位的长度
或者之间就print @sql
在消息栏里就可以看见语句了
⑦ 怎么让存储过程即时输出信息
自治事务加管道函数就行,不过看起来有些别扭:
create or replace type g_message_type is table of varchar2(32767);
/
CREATE OR REPLACE FUNCTION f_test RETURN g_message_type
PIPELINED AS
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
FOR loop_idx IN 1 .. 10
LOOP
INSERT INTO tab1 VALUES (1, 1);
COMMIT;
PIPE ROW('1 rows inserted!');
dbms_lock.sleep(1);
END LOOP;
RETURN;
END;
/
set arraysize 1;
select * from table(f_test);
复制代码
⑧ sql server存储过程用print就能打印,mysql存储过程能打印么应该也行吧,但是找不到呢
每种语言都有自己的特色:
sqlserver 可以 print,可以直接select 返回数据。
其他语言不一定能行的。
比如Oracle,就不能直接select,不能直接print返回数据,只能通过其他函数显示在控制台上,无法返回。
mysql我不熟悉,但我想不一定有这种功能,用这个试试:
好像Mysql存储过程中没有打印语句,可以用select 来代替,比如:
select @var;
在换不同语言的时候,旧的习惯会很困扰我们的。
⑨ SQL存储过程输出参数打印不出来
看错了,应该是:
declare @shuchu int
Exec up_mohuchaxun_shuchu @shuchu output
print @shuchu