当前位置:首页 » 服务存储 » mysql存储函数返回一条数据
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

mysql存储函数返回一条数据

发布时间: 2023-08-30 20:13:25

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程序里的调用。