① 如何將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