当前位置:首页 » 编程语言 » sql函数返回结果集
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql函数返回结果集

发布时间: 2023-07-14 17:29:06

‘壹’ Oracle动态sql返回单条结果和结果集

DDL 和 DML

前巧/*** DDL ***/

begin

EXECUTE IMMEDIATE drop table temp_ ;

EXECUTE IMMEDIATE create table temp_ (name varchar ( )) ;

end;

/*** DML ***/

declare

v_ varchar ( );

v_ varchar ( );

str varchar ( );

begin

v_ := 测试人员 ;

v_ := 北京 ;

str := INSERT INTO test (name address) VALUES (: : ) ;

EXECUTE IMMEDIATE str USING v_ v_ ;

mit;

end;

返回单条结果

declare

str varchar ( );

c_ varchar ( );

r_ test%rowtype;

begin

c_ := 测试人员 ;

str:= select * from test where name=:c WHERE ROWNUM= ;

execute immediate str into r_ using c_ ;

DBMS_OUTPUT PUT_LINE(R_ NAME||R_ ADDRESS);

end ;

返回结果集

CREATE OR REPLACE package pkg_test as

/* 定义ref cursor类型

不加return类型 为弱类型 允许动态sql查询

否则为强类型 无法使用动态sql查询;

*/

type myrctype is ref cursor;

函数申明

function get(intID number) return myrctype;

end pkg_test;

/

慧含键CREATE OR REPLACE package body pkg_test as

函数体

function get(intID number) return myrctype is

rc myrctype; 定义ref cursor变量

sqlstr varchar ( );

begin

if intID= then

静态测试 直接用select语句直接返回结果

open rc for select id name sex address postcode birthday from student;

else

动态sql赋值 用:w_id来申明该变量从外部获得

sqlstr := select id name sex address postcode birthday from student where id=:w_id ;

动态测试 用sqlstr字符串返回结果 用using关键词传递参数

老扮open rc for sqlstr using intid;

end if;

return rc;

end get;

end pkg_test;

lishixin/Article/program/Oracle/201311/17186

‘贰’ sql中如何通过存储过程返回结果集

引用
4

oraclefans_
的回复:想麻烦了。。你直接返回游标就是一个结果集合。。CREATE
OR
REPLACE
PROCEDURE
USP_RETN_VAL(
RETN_VAL_CUR
OUT
sys_refcursor)ISBEGIN
OPEN
RETN_VAL_CUR
FOR
SELECT
*
FROM
TBL1;END;调用declare
cur
sys_refcurso……谢谢
但是我是想执行一个存储过程后,直接返回表里所有数据,不要再去操作游标。

‘叁’ SQLSERVER,一条SQL语句返回查询结果集和全表记录数

你可以只用这一条SQL
select * from Table

然后用mysql_num_rows() 获取记录数

‘肆’ 关于java中拼接sql,表名作为参数,返回结果集怎么接 [问题点数:30分]

通常通过SQL查询语句查出来的结果集封装在ResultSet对象中,然后我们会这样处理:
把ResultSet对象中的数据取出来并封装在javabean中,所以我们需要这样写(我假设这里的javabean是Student.java 里面有private String name和private int id两个属性 ,当然你需要生成对应的getter和setter方法)
while(rs.next()){
Student s=new Student();
s.setName(rs.getString("name"));
s.setId(rs.getInt("id"));
return s;
}

这样就把相应的数据封装进javabean对象中了,当然还有一种简便的方法是用Apache开源组织的dbUtils工具 详看API 这个太多不好说

‘伍’ 关于SQL语句Select返回,是结果集还是单一值

关于返回什么,是由你的select 语句后面的语句决定,最终呈现的是什么?

例如 :select * from table 返回的肯定是一个结果集
例如:select top 1 name from table 返回的就是一个单一的具体name对应的值了

‘陆’ SQL COUNT 值 返回 0

sql 中 count()作用是返回结果集的记录数。
返回0,即
1、检索结果记录数为0
2、指定列非空记录为0

1、SQL COUNT() 语法
SQL COUNT(column_name) 语法
COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入):
SELECT COUNT(column_name) FROM table_name

2、SQL COUNT(*) 语法
COUNT(*) 函数返回表中的记录数:
SELECT COUNT(*) FROM table_name

3、SQL COUNT(DISTINCT column_name) 语法
COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目:
SELECT COUNT(DISTINCT column_name) FROM table_name

注释:COUNT(DISTINCT) 适用于 ORACLE 和 Microsoft SQL Server,但是无法用于 Microsoft Access。

‘柒’ 求助,sqlserver2005存储过程如何返回这样的结果集

部署CLR存储过程
上面的示例代码需要进行编译才能通过存储过程来调用。在命令行中执行下面的命令来编译这些代码并创建类库DLL MSSQLTipsCLRLib.dll:
CSC/target:libraryStoredProceres.cs/out:MSSQLTipsCLRLib.dll
假设你使用的是Microsoft .NET框架的第二版本,那么你可以在C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727目录下看到CSC.EXE。
执行下面的T-SQL脚本来创建这个存储过程:
ALTERDATABASEmssqltips

FROM'C:\mssqltips\MSSQLTipsCLRLib.dll'
WITHPERMISSION_SET=EXTERNAL_ACCESSGOCREATEPROCEDUREdbo.GetListOfFiles
@pathNVARCHAR(256)
,@patternNVARCHAR(64)
,@.StoredProceres.GetListOfFiles
在编译了这个代码到类库(.dll)之后,CREATE ASSEMBLY命令就被执行了,它将这个DLL与ASSEMBLY数据库对象关联起来。FROM条件从句必须指向DLL的实际路径。PERMISSION_SET必须设置为EXTERNAL_ACCESS,因为.NET代码将访问SQL Server 之外的文件系统。TRUSTWORTHY选项被设置为on,以允许外部访问。最后,CREATE PROCEDURE命令的EXTERNAME NAME将这个集合、类和函数与这个存储过程名称关联起来。
要执行这个存储过程,执行下面的脚本:
EXECdbo.GetListOfFiles'C:\mssqltips','*.*',0
你将看到类似于下面的输出,这取决于你选择的文件夹的内容;例如,一个只有一列、每一行是一个文件的结果集:图2接下来的步骤
在这里下载示例脚本并执行从一个CLR存储过程返回结果集。
记住,当在Microsoft .NET框架中有满足你需求的函数时,使用SQL Server的CLR可能是个很好的解决方法。