select
subjcode 科目編號,
lsubjname 科目名稱,
201701 開始期間,
201712 結束期間
from audadmin.audit_subjcode
上面這個陳述句運行正確

declare
sdata nvarchar2(20) :='201701';
edata nvarchar2(20) :='201712';
begin
select
subjcode 科目編號,
lsubjname 科目名稱,
sdata 開始期間,
edata 結束期間
from audadmin.audit_subjcode
end;
改成這樣就出錯了,

網上搜索沒找到答案,請問高手該怎么寫,才能實作呼叫變數
uj5u.com熱心網友回復:
plsql 中不支持這樣的查詢; 只能寫在程序中,回傳這樣的結果;sqlplus 倒是可以,只是資料量大了,看著不方便。
uj5u.com熱心網友回復:
那請問有哪些變通的方法可以實作呢?可以給出例子陳述句嗎?
一個陳述句里面重復很多遍太容易出錯了,也不利于修改。
SQLSERVER里好像可以直接把@加變數,放到SELECT后面。
uj5u.com熱心網友回復:
放在一個存盤程序里,把這些值做為輸入引數。 再回傳一個游標,每次呼叫,就查看這個游標的內容就可以了。uj5u.com熱心網友回復:
用 dbms_output.put_putline 拼接列印出來可以uj5u.com熱心網友回復:
ORACLE的PL SQL輸出結果集不如SQL SERVER那么方便您可以把您的需求再完整的描述一下
如過僅僅是把當前的結果集列印出來,可以用FOR 和PUTLINE方法列印
uj5u.com熱心網友回復:
我想用呼叫變數的方式來寫查詢陳述句。
想得到和沒使用變數時,相同的輸出結果。
就是第二張圖的結果。
目前用了幾種方法還是各種報錯。
uj5u.com熱心網友回復:
可以考慮用游標接收結果集
uj5u.com熱心網友回復:
感覺復雜化了,這里只是想用變數的方式寫個陳述句,然后在plsql下方顯示查詢結果。我之前的陳述句該怎么改,能給個陳述句嗎
uj5u.com熱心網友回復:
用動態陳述句拼接。uj5u.com熱心網友回復:
declare
sdata nvarchar2(20) :='201701';
edata nvarchar2(20) :='201712';
begin
select
subjcode 科目編號,
lsubjname 科目名稱,
(select sdata from dual) as sdata 開始期間,
(select edata from dual) as edata 結束期間
from audadmin.audit_subjcode
end;
如上,用select sdata from dual 將變數查出來
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/18068.html
標籤:基礎和管理
