接收存儲過程返回值
Dim Cnn As ADODB.Connection
Dim Rs As ADODB.Recordset
Dim Cnn_c As New ADODB.Command
Dim cnn_p As ADODB.Parameter
Cnn.ConnectionString = ConnStr'連接字元串
With Cnn
'.Provider = "MSDASQL"
.CursorLocation = adUseClient
.Open
End With
Set Cnn_c.ActiveConnection = Cnn
With Cnn_c
.CommandType = adCmdStoredProc
.CommandText = "存儲過程名"
End With
Set cnn_p = Cnn_c.CreateParameter("ReTurn", adInteger, adParamReturnValue)
Cnn_c.Parameters.Append cnn_p
『這里添加其他參數
Set Rs = Cnn_c.Execute'執行
'Cnn_c.Parameters("ReTurn")這就是返回值
Rs.close
Cnn.Close
Set cnn_p = Nothing
Set Cnn_c = Nothing
Set Rs = Nothing
Set Cnn = Nothing
② c# 處理存儲過程output返回值的問題
因為ExecuteReader每次讀取一行,沒有和資料庫斷開連接,就像一個方法正在執行中,還沒執行return呢。所以沒值。
而ExecuteNonQuery是根據條件全查出來了放在你本地內存,就像一個方法執行完一樣,所以return也執行了,也就有值。
返回值我一般寫在添加等操作的存儲過程里,查詢沒必要即查詢結果還要在附帶一個返回值。不如只查結果,返回值不就是通過一些計算得來的嗎,完全可以在代碼中計算出來。
比如我添加的存儲過程是:
ALTER PROC [dbo].[sp_InsertModal]
@ModalName int
AS
INSERT tb_Modal(ModalName) values(@ModalName);
SELECT @@IDENTITY;
通過@@IDENTITY我能在添加一條數據後,直接拿到此數據的id數(自動增長的)。
像查詢的都寫成:
ALTER PROC [dbo].[sp_SelectLog]
@LogWork VARCHAR(50),
@StartTime DATETIME,
@EndTime DATETIME,
@UserId INT,
@ModalId INT
AS
SELECT LogId,LogWork,CreateTime,UserId,ModalId
FROM tb_Log tl
WHERE (@LogWork='' OR tl.LogWork=@LogWork)
AND (@StartTime <= tl.CreateTime AND @EndTime >= tl.CreateTime)
AND (@UserId = 0 OR tl.UserId = @UserId)
AND (@ModalId = 0 OR tl.ModalId = @ModalId)
樓主考慮一下,如果存儲過程不好解決可以試著在代碼中去處理。 因為存儲過程也是類似於程序中的方法。在存儲過程裡面處理業務邏輯和方法裡面是一樣的。但你要考慮那個更適合你的程序。
③ oracle 怎麼調用存儲過程
在Oracle中調用存儲過程時,確實可以直接使用過程名並附帶參數,例如:過程名(欄位 變數)。這表明過程名後緊跟參數列表,參數可以是變數、常量或表達式,用於傳遞給過程中的輸入或輸出。
例如,假設有一個名為getEmployeeInfo的存儲過程,它需要兩個參數:員工ID和員工名稱。你可以這樣調用它:getEmployeeInfo(1001, '張三')。這里1001和'張三'分別對應參數1和參數2的值。
如果存儲過程有輸出參數,那麼調用時需要指定輸出參數的變數。例如,假設有一個名為getEmployeeSalary的存儲過程,它有一個輸出參數:salary,你可以這樣調用它:getEmployeeSalary(1001, :salary),這里:salary是一個綁定變數,用於接收存儲過程返回的薪水值。
在Oracle中,調用存儲過程的具體語法取決於過程的定義。如果過程有輸入參數,通常需要提供相應的值;如果有輸出參數,則需要使用綁定變數來接收返回值。了解這些基本概念後,你就可以在PL/SQL塊或其他SQL語句中調用存儲過程了。
調用存儲過程時,還需要注意資料庫連接和許可權問題。確保你的用戶賬戶具有執行存儲過程的許可權,並且已經正確地建立了到資料庫的連接。此外,可以使用事務處理來管理存儲過程的執行,以確保數據的一致性和完整性。
在實際應用中,存儲過程可以用於執行復雜的業務邏輯,提高資料庫操作的效率和安全性。通過合理設計和使用存儲過程,可以簡化應用程序的代碼,減少資料庫訪問次數,提高系統的性能和可維護性。
總之,調用Oracle存儲過程的關鍵在於正確理解過程的參數定義,並根據需要提供輸入值或接收輸出值。通過熟練掌握存儲過程的調用方法,你可以更高效地利用Oracle資料庫的功能。
④ 在sql Server中~如何利用RETURN返回存儲過程的值~~~
從存儲過程返回非表類型的值有二種方法:
1.存儲過程使用return語句返回值.此種情況下,接收該存儲過程值的方法是:
delcare @ReturnValue int /*(與存儲過程return語句返回值的類型相同)*/
exec @ReturnValue = StoredProc /*StoredProc為一個存儲過程*/
2.存儲過程使用OUTPUT輸出參數.此種情況下,直接使用OUTPUT輸出參數即可:
declare @id int
set @id = 1
exec StoreProc @id OUTPUT /*StoredProc為一個存儲過程*/
select @id