存儲過程變數
Ⅰ Oracle 存儲過程的動態變數如何使用
實現思路:
第一步:先定義一個字元串,這個字元串sql是由動態變數和其他的sql語句成分拼接組成。
第二步:直接執行 execute immediate SQL;
備註:以上方法是oracle提供的動態執行方法語句,直接使用就可以。
VAR_DYNAMIC_SQL := 'INSERT INTO RP_COMFIRMED_EVENT_DETAIL( EVENT_ID,--ID TRANS_TIME,--交易時間 TRANS_TYPE,--交易類型 TRANS_PROVINCE,--開戶省份 CCE_CSTNO,--客戶號 CCE_CERTTYPE,--證件類型 CCE_CERTNO,--證件號 CCE_AMT,--交易金額 CCE_RISK_SCORE,--不處理的風險分值 CCE_PAYEE_ACC,--付款人賬號 CCE_PAYEE_NAME,--付款人姓名 CCE_REC_NODE,--收款人開戶行 CCE_REC_ACC,--收款人賬號 CCE_REC_NAME,--收款人姓名 RULE_NAME,--規則名稱 CCE_RULE_NOTE,--規則描述 SCORE_RANGE--處理後的風險分值 )select EVENT_ID, SYS_CREATION_DATE, GET_NAME_BY_CODE(GET_TOTAL_EVENT_TYPE(T1.EVENT_TYPE,T1.USER_DEFINED_EVENT_TYPE),''eventType'') AS TRANS_TYPE, -- get_province(IP_COUNTRY,IP_CITY) AS CCE_TRANSTYPE, get_vale_from_cd_p('||get_vale_from_cd1('13','5')||'),--開戶省份為自定義欄位 USER_ID, '||get_vale_from_cd1('4','4')||',--證件類型為自定義欄位 '||get_vale_from_cd1('7','4')||',--證件號為自定義欄位 要轉換成動態SQL GET_AMT_BY_CURRENCY(AMOUNT_ORIGINAL,AMOUNT_CURRENCY),--通過匯率和幣種轉換 RISK_SCORE, USER_ACCT_NUMBER, '||get_vale_from_cd_g1(get_vale_from_cd_al)||',--付款人姓名 '||get_vale_from_cd1('11','5')||',--收款人開戶行 自定義欄位 需轉換成動態SQL EXT_ACCT_NUMBER, EXT_ACCT_OWNER_NAME, NVL(POLICY_RULE_ID,''FALLBACK_RULE'') AS RULE_NAME, SUBSTR(GET_RULE_ORDER_ID(ORG_ID,POLICY_RULE_ID),INSTR(GET_RULE_ORDER_ID(ORG_ID,POLICY_RULE_ID),''-'')+1),--描述 GET_SCORE_RANGE(RISK_SCORE) AS RISK_SCORE_RANGE FROM EVENT_LOG_REALTIME T1))'; execute immediate VAR_DYNAMIC_SQL;
Ⅱ Sql server 存儲過程中怎麼將變數賦值
/*
Sql server 存儲過程中怎麼將變數賦值
*/
--SQL賦值語句
DECLARE @test1 INT
SELECT @test1 = 111
SET @test1 = 222
--SQL函數賦值,假定count()是自定義函數
DECLARE @test2 INT
SELECT @test2 = COUNT(*) FROM sys.sysobjects
--SQL存儲過程賦值,直接傳參處理(類似C語言中的指針嗎)
IF OBJECT_ID('sp_test') IS NOT NULL DROP PROCEDURE sp_test
GO
CREATE PROCEDURE sp_test(@test INT OUTPUT)
AS
BEGIN
SELECT @test = 999
END
GO
DECLARE @test3 INT
EXEC sp_test @test3 OUTPUT
SELECT @test3
DROP PROCEDURE sp_test
GO
Ⅲ 存儲過程中的變數問題(PL/SQL)
一樓回答正確,另外再說一個簡單點的:
for
rec
--(rec是游標名,可以自己定義)
in
(select
*
from
temp1)
loop
後用到temp1的哪些信息就取rec的相應信息就行.
結束時用
end
loop;(循環結束)
Ⅳ 存儲過程中如何定義一個變數
create proc 存儲過程名字
@參數名 類型,
........
as
declare @變數名 類型
set @變數名=。。。。。賦值
Ⅳ 怎樣在SQL 存儲過程的變數前加上 N'
if @srID>0
set @condition =@condition+' and srID='+convert(varchar(10),@srID)
if len(@srName)>0
set @condition =@condition+' and srName='+@srName
declare @sql varchar(max)
set @sql=' select srID,srName,srNotes,cTime from SourceRegion where '+@condition
exec(@sql)
用動態語句
Ⅵ SQL存儲過程可以定義表變數嗎
這樣不行吧。
可以這樣間接部分實現這種功能:
ALTER PROCEDURE dbo.StoredProcere1
@tpye int
AS
if @tpye =1
select * from table1
else if @tpye =2
select * from table1
……
Ⅶ SQL 存儲過程變數
整個語句塊創建了一個存儲過程,其中的查詢使用了存儲過程的參數。你可以通過直接執行存儲過程,將值傳給傳出過程的參數,來實現執行查詢。
例如:
execute dbo].[p_sele_sp] '%a%','1%',『aaa%』,'bbb%';
如果希望直接執行查詢語句,則需要用declare關鍵字事先聲明變數。如下:
-- 聲明變數
declare @spbh varchar(20) , @zjm varchar(100) , @sptm varchar(20) , @splb varchar(20)
-- 給變數賦值
set @spbh = 』%a%'
set @zjm = '1%'
set @sptm = 『aaa%』
set @splb = 'bbb%'
--執行查詢
SELECT TOP 200 spbh,spname,dw,spgg,scqy,spcd,sl,lsj,zdsj,spid,splb,jj,
sptm,spsx,kfid,jx,pzwh,is_sy,jbz,zbz,ajia,bjia,cjia,djia,bz,bz1,bz2,bz3,bz4,bz5,bz6,bz7,bz8,bz9
FROM t_sp_info
WHERE ( status = '是' ) AND
( pym like @zjm OR spname like @zjm OR spbh like @spbh OR sptm like @sptm ) AND ( splb like @splb )
Ⅷ SQL存儲過程中怎樣給變數賦值
exec
是執行存儲過程的命令,不能作為存儲過程名
而且你這個似乎是希望用變數轉換成SQL命令,不是這樣用法的
Ⅸ SQL存儲過程如何將結果放入變數
查詢計劃緩存及各種 SET 選項(與 showplan 相關及其他)
各種 SET 選項——多數與 showplan 相關——以多種復雜的方式影響著查詢計劃和執行上下文的編譯、緩存和重用。下表匯總了相關的詳細信息。
應按如下順序閱讀該表中的內容。批處理通過表中第一列所指定的特定模式提交給 SQL Server。已提交的批處理的計劃緩存中可能存在、也可能不存在已緩存的查詢計劃。第 2 列和第 3 列描述了存在已緩存的查詢計劃時的情況;第 4 列和第 5 列說明了不存在已緩存的查詢計劃時的情況。在每個類別中,查詢計劃和執行上下文的各種情況都是獨立的。表中說明了結構(查詢計劃或執行上下文)所發生的情況:是否被緩存、重用和使用。
模式名稱 存在已緩存的查詢計劃時 存在已緩存的查詢計劃時 不存在已緩存的查詢計劃時 不存在已緩存的查詢計劃時
查詢計劃
執行上下文
查詢計劃
執行上下文
showplan_text, showplan_all, showplan_xml
被重用(無編譯)
被重用
被緩存(編譯)
生成一個執行上下文,對其進行緩存但不使用它
statistics profile, statistics xml, statistics io, statistics time
被重用(無編譯)
不被重用生成並使用一個全新的執行上下文,但不對其進行緩存
被緩存(編譯)
生成並使用一個全新的執行上下文,但不對其進行緩存
noexec
被重用(無編譯)
被重用
被緩存(編譯)
不生成執行上下文(由於「noexec」模式)。
parseonly(例如,在查詢分析器或 Management Studio 中按「分析」按鈕)
無
無
無
無
查詢計劃和執行上下文的相關成本
Ⅹ 存儲過程中如何定義一個變數
存儲過程常見的變數:局部變數、用戶變數、系統變數