A. 資料庫函數如何返回一個值
一.
實現結果:在一個資料庫中某個用戶下編寫一個存儲過程,在存儲過程中使用dblink連接另一個資料庫,從此資料庫中的一個用戶下取數,然後插入當前的資料庫中的一個表中。
二.
實現方法步驟:
1.
創建存儲過程
2.
在存儲過程中先創建database
link
3.
創建成功
4.
從另一個資料庫取出數據插入到當前資料庫中
5.
任務完成
三.
創建dblink的方法:
1.
create
public
database
link
dblink
connect
to
totalplant
identified
by
totalplant
using
'(description
=
(address_list
=
(address
=
(protocol
=
tcp)(host
=
localhost)(port
=
1521))
)
(connect_data
=
(service_name
=
prd.gdc)
)
)';
語法解釋:create
public
database
link
dblink名字(自己隨便起)
connect
to
用戶名
identified
by
密碼
using
'(description
=
(address_list
=
(address
=
(protocol
=
tcp)(host
=
要連接的資料庫所在伺服器的ip地址)(port
=
1521))
)
(connect_data
=
(service_name
=
要連接的資料庫的在本地的服務名(即要連接的資料庫的sid))
)
)';
2.
如果創建private的dblink
create
database
link
dblink
connect
to
totalplant
identified
by
totalplant
using
'(description
=
(address_list
=
(address
=
(protocol
=
tcp)(host
=
localhost)(port
=
1521))
)
(connect_data
=
(service_name
=
prd.gdc)
)
)';
B. MYsql的存儲過程如何返回查詢到的行數據
out返回只能是確定的某種類型的一個值,例如VARCHAR或者INT等等,你想返回多條記錄的話只需要在最後加上一個或者多個SELECT語句就行了啊,然後在外面用ResultSet對象接住就行了。
C. 如何 mysql 存儲過程返回值
mysql中要獲得存儲過程的返回值,可以增加一個out參數,用來返回。
mysql中存儲過程的例子:
CREATE PROCEDURE addvoucher (
IN userid INT,
IN voucherid INT,
OUT result INT
)
BEGIN
SELECT
@endate_a := endate ,@batch_a := batch ,@c_count_a := c_count,
@isdead_a := isdead
FROM
t_voucher
WHERE
id = voucherid;
SET autocommit = 0;
IF EXISTS (
SELECT
*
FROM
t_user_voucher tuv,
t_voucher tv
WHERE
tv.id = tuv.voucherid
AND tv.batch =@batch_a
) THEN
SET result = 1;-- 已存在
SELECT
result;
ELSE
IF @c_count_a > 0 THEN
IF (
TO_DAYS(@endate_a) - TO_DAYS(NOW())
) > 0 THEN
IF @isdead_a = 1 THEN
INSERT INTO t_user_voucher (userid, voucherid, isdead)
VALUES
(userid, voucherid, 1);
UPDATE t_voucher SET c_count = c_count-1 where id = voucherid;
SET result = 0;-- 成功
END;
D. MySQL:想把查詢結果作為返回值返回,這個SQL函數該怎麼寫返回值類型該填什麼
返回值類型:table
E. 如何創建MySQL存儲過程可以返回一個表類型的數據
如何創建MySQL存儲過程可以返回一個表類型的數據
首先需要知道「另一個存儲過程」的結果集的所有列的類型。
假設「另一個存儲過程」的名字是sp1,沒有參數,返回的結果集共3列,全部為int型,那麼「存儲過程」里添加一個與結果集列數相同的臨時表或表變數用於接收「另一個存儲過程」的結果集
如下
CREATE PROCEDURE sp2
AS
DECLARE @t table(a int,b int,c int)
INSERT INTO @t(a,b,c)
EXEC sp1
SELECT * FROM @t
使用SQLSERVER存儲過程可以很大的提高程序運行速度,簡化編程維護難度,現已得到廣泛應用。
創建存儲過程
和數據表一樣,在使用之前需要創建存儲過程,它的簡明語法是:
引用:
Create PROC 存儲過程名稱
[參數列表(多個以「,」分隔)]
AS
SQL 語句
例:
引用:
Create PROC upGetUserName
@intUserId INT,
@ostrUserName NVARCHAR(20) OUTPUT -- 要輸出的參數
AS
BEGIN
-- 將uName的值賦給 @ostrUserName 變數,即要輸出的參數
Select @ostrUserName=uName FROM uUser Where uId=@intUserId
END
其中 Create PROC 語句(完整語句為Create PROCEDURE)的意思就是告訴SQL SERVER,現在需要建立一個存儲過程,upGetUserName 就是存儲過程名稱,@intUserId 和 @ostrUserName 分別是該存儲過程的兩個參數,注意,在SQL SERVER中,所有用戶定義的變數都以「@」開頭,OUTPUT關鍵字表示這個參數是用來輸出的,AS之後就是存儲過程內容了。只要將以上代碼在「查詢分析器」里執行一次,SQL SERVER就會在當前資料庫中創建一個名為「upGetUserName」的存儲過程。你可以打開「企業管理器」,選擇當前操作的資料庫,然後在左邊的樹型列表中選擇「存儲過程」,此時就可以在右邊的列表中看到你剛剛創建的存儲過程了(如果沒有,刷新一下即可)。
二、存儲過程的調用
之前已經創建了一個名為「upGetUserName」的存儲過程,從字面理解該存儲過程的功能是用來取得某一個用戶的名稱。存儲過程建立好了,接下來就是要在應用程序里調用了,下面看一下在ASP程序里的調用。