当前位置:首页 » 存储配置 » c存储过程返回表

c存储过程返回表

发布时间: 2022-07-15 22:14:30

A. 如何用mysql存储过程 返回一个表

mysql好像不能返回一个表吧,你为什么要返回这个表呢?mssql里面可以写一个表值函数,返回一个结果集,你这里是创建了一个表,还需要返回吗?? 你的biao111已经存在在数据库里了,你直接select不就行了。而且select
*
into
biao111
from
checi
这种用法mysql也不支持。你看看这样能不能行?
DELIMITER
//
CREATE
PROCEDURE
proc_40()
BEGIN

CREATE
TABLE
biao111
SELECT
*
FROM
checi;

SELECT
*
FROM
biao111;
END

B. oracle如何执行存储过程以及如何返回一个table

-- 定义类型
CREATE OR REPLACE TYPE MyTable AS OBJECT(A int, B int, C int);
/
CREATE OR REPLACE TYPE MyTableResult IS TABLE OF MyTable;
/
CREATE OR REPLACE FUNCTION getTestTable return MyTableResult
IS
-- 预期返回结果.
return_Result MyTableResult := MyTableResult();
BEGIN
-- 结果追加一行.
return_Result.EXTEND;
-- 设置结果内容.
return_Result(return_Result.COUNT) := MyTable(A => 1, B=>2, C=>3);
-- 结果追加一行.
return_Result.EXTEND;
-- 设置结果内容.
return_Result(return_Result.COUNT) := MyTable(A => 4, B=>5, C=>6);
-- 结果追加一行.
return_Result.EXTEND;
-- 设置结果内容.
return_Result(return_Result.COUNT) := MyTable(A => 7, B=>8, C=>9);
return return_Result;
END getTestTable;
/
SQL> SELECT
2 A, B, C
3 FROM
4 table( getTestTable() );
A B C
---------- ---------- ----------
1 2 3
4 5 6
7 8 9
SQL>

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;

D. 建立了存储过程,然后信息返回到表格中,为什么返回类型是int 怎么改才能符合表格要求

首先需要知道“另一个存储过程”的结果集的所有列的类型。
假设“另一个存储过程”的名字是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

E. MYSQL如何把存储过程所返回的结果集插入到表

从存储过程返回表类型的值也有二种:
1.存储过程使用浮标参数,即同时指定CURSOR VARYING OUTPUT项.调用者可以使用while及fetch循环遍历该浮标.
2.直接将存储过程返回的结果集插入到表中,即使用insert into 表名 exec 存储过程.此种方式中注意存储过程返回的结果集列与insert的列要完全对应,可以在insert中指定列名来保证对应关系.
------------------------------------------------------------------------------测试:------------------------------------------------------------------------------
----建立测试用的临时表
create table #tmp (colx int,coly int)
insert into #tmp values(1,2)
insert into #tmp values(2,3)
insert into #tmp values(3,4)
select * from #tmpGO----创建返回游标的存储过程
create proc sp_c @cur CURSOR VARYING OUTPUTASbeginset @cur = CURSOR for select colx from #tmp
open @cur /*该过程返回游标,该游标为colx列的查询结果*/endGO----创建返回表的存储过程
create proc sp_dasselect coly from #tmp /*该过程返回coly列的查询结果*/go----创建用于调用以上二个存储过程的存储过程
create proc sp_easbegindeclare @x int
declare @cur cursor
----接收游标,并遍历游标
EXEC sp_c @cur OUTPUT
fetch next from @cur into @x
while (@@FETCH_STATUS = 0)beginprint @xfetch next from @cur into @xENDclose @curdeallocate @cur
----将存储过程返回的列值再重新插入源表中

F. 存储过程中调用带返回值的函数

如果是ACCESS、MySQL、SQL 2000 数据库

SELECT * FROM tabel_ WHERE date < (now()-30)

数据库都自带很多函数的

G. 存储过程如何把一个结果集放在一张表里面并返回来

结果集有必要放在表里面返回来,直接返回游标就可以了,结果集也可以看作是张表的。

DB2的的解决方案:
1.声明存储过程的时候,在声明之后添加 RESULT SETS 1,表示返回一个结果集,示例如下:
CREATE PROCEDURE YOUPRO(IN P_UserId INTEGER)
LANGUAGE SQL
RESULT SETS 1
------------------------------------------------------------------------
-- SQL 存储过程(获取用户信息)
------------------------------------------------------------------------
P1: BEGIN
--声明会使用到的参数
.... ....
... .....
2.在存储过程中声明一个游标,然后返回,示例如下:
DECLARE C1 CURSOR WITH RETURN FOR SELECT *FROM TABLE;
OPEN C1;

Oracle的解决方案:
1.先定义一个包,示例如下:
create or replace package CursorPackage as
type my_cursor is ref cursor;
end CursorPackage;
2.在存储过程返回参数使用这个定义的参数,示例如下:
create or replace procere YOUPRO(P_UserId IN NUMBER, C_Return OUT CursorPackage.my_cursor)IS ... ... ..
3.存储过程中,给返回参数赋值,示例如下:
OPEN C_Return FOR SELECT * FROM TABLE;

Sql Server的解决方案

直接返回SELECT * FROM TABLE,SqlServer中可以直接返回结果。

希望对你有帮助!

H. C#获取 sqlserver 存储过程返回多表数据

返回的时候用dataset就可以,比如你存储过程这样写
select * from A
select * from B
select * from C
select * from D
select * from D
在执行完存储过程后返回一个dataset
dataset ds = 执行存储过程
ds.tables[0]就是表A
ds.tables[1]就是表B
ds.tables[2]就是表C
剩下的依次类推.

热点内容
在团竞模式中怎么重置配置 发布:2024-10-08 02:12:54 浏览:288
宝马远程服务器如何启用 发布:2024-10-08 02:02:57 浏览:390
c语言freadfwrite 发布:2024-10-08 02:01:15 浏览:853
脚本还不简单吗 发布:2024-10-08 01:54:43 浏览:422
安卓手机如何像平板一样横屏 发布:2024-10-08 01:33:26 浏览:509
wapi认证服务器ip 发布:2024-10-08 01:33:24 浏览:506
centos自带python 发布:2024-10-08 00:53:31 浏览:340
android串口调试助手 发布:2024-10-08 00:45:03 浏览:405
sqlserver2008乱码 发布:2024-10-08 00:39:59 浏览:220
华为电脑服务器系统进不去提示 发布:2024-10-08 00:13:42 浏览:491