当前位置:首页 » 编程语言 » sql的游标和程序设计在哪里
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql的游标和程序设计在哪里

发布时间: 2023-03-22 14:35:59

A. sql 存储过程 游标用在什么地方(新手刚学,不知道使用场景)我是C#做Web开发的

web开发很多用orm框架,存储过程和游枝扮标都很少用。比如你用EF提倡CodeFirst,这得看你框架的规则上进行。纯粹轮搭茄来讲所有的sql执行语句都可以放到存储过程里。比如insert,uodate,delete,select都可以。存储过程有执行速度快的优势,参数传递占用空间小。同时方便后期修改和管理。比如像我现在用的一个简单的存储过程,返回当前客户期数:
create proc proc_name(@account nvarchar(30))
as
begin
/*-------------------------------------------------------------------------------------
程序说明:返回当前客户的期初数,业务结算月为26,以打印时间为准
BY:ChuiFeng 2013-02-27
返回结果:@CreditAmount字段
-------------------------------------------------------------------------------------*/
declare @ARAmount decimal(22,10) = 0 --已经收到的客户金额, 实收金额
declare @SaleAmount decimal(22,10) = 0 --货物金额, 应收金额
--declare @amount decimal(22,10) =0 --存放期初
declare @endDate datetime --截止日期
--构造截止日期
if(DATEPART(DAY, GETDATE())>26) --当前日期超过结算日26号
set @endDate = CAST(CAST(DATEPART(year, GETDATE()) AS varchar(4)) + '-' + CAST(DATEPART(MONTH, GETDATE()) AS nvarchar(2)) + '-26' AS DateTime)
else
set @endDate = CAST(CAST(DATEPART(year, GETDATE()) AS varchar(4)) + '-' + CAST(DATEPART(MONTH, GETDATE())-1 AS nvarchar(2)) + '-26' AS DateTime)
select @ARAmount=SUM(Amount) from T_AR where CusCode=@account and PrintState=255 and DATEDIFF(DAY,PrintedTime,@endDate)>0
--select @SaleAmount=SUM(Amount) from T_SOs where SONO in (select SONO from T_SO where CusCode=@account and PrintState=255 and DATEDIFF(DAY,PrintedTime,@endDate)>0)
select @SaleAmount=SUM(Amount) from T_SO where CusCode=@account and PrintState=255 and DATEDIFF(DAY,PrintedTime,@endDate)>0
if(@ARAmount is null) set @ARAmount=0
if(@SaleAmount is null) set @SaleAmount=0

return @SaleAmount-@ARAmount
end

如果客户需求发生了变化比如结算日改了,那么我们只需要修改存储过程就行了 而不必要修改程序代码重新编译。

至于游标:建议慎用 少用。主要就是性能问题。一般是在大数腊察据量循环的情况下可能用但是最好别用,用好的存储过程可以实现就别用游标...

B. 如何使用SQL Server游标(一)

但是我们常常会遇到这样情况,即从某一结果集中逐一地读取一条记录。那么如何解决这种问题呢?游标为我们提供了一种极为优秀的解决方案。 1.游冲运悉标和游标的优点 在数据库中,游标是一个十分重要的概念。游标提供了一种对从表中检索出的数据进行操作的灵活手段,就本质而言,游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标总是与一条T_SQL 选择语句相关联因为游标由结果集(可以是零条、一条或由相关的选择语句检索出的多条记录)和结果集中指向特定记录的游标位置组成。当决定对结果集进行处理时,必须声明一个指向该结果集的游标。如果曾经用 C 语言写过对文件进行处理的程序,那么游标就像您打开文件所得到的文件句柄一样,只要文件打开成功,该文件句柄就可代表该文件。对于游标而言,其道理是相同的。可见游标能够实现按与传统程序读取平面文件类似的方式处理来自基础表的结果集,从而把表中数据以平面文件的形式呈现给程序。 我们知道关系数据库管理系统实质是面向集合的,在MS SQL SERVER 中并没有一种描述表中单一记录的表达形式,除非使用where 子句来限制只有一条记录被选中。因此我们必须借助于游标来进行面向单条记录的数据处理。 由此可见,游标允许应用程序对查询语句select 返回的行结果集中每一行进行相同或不同的操作,而不是一次对整个结果集进行同一种操作;它还提供对基于游标位置而对表中数据进行删除或更新的能力;而且,正是游标把作为面向集合的数据库管理系统和面向行的程序设计两悄正者联系起来,使两个数据处理方式能够进行沟通。 2.游标种类 MS SQL SERVER支持三种类型的游标:Transact_SQL 游标,API 服务器游标和客户游标。 (1)Transact_SQL游标 Transact_SQL游标是由DECLARE CURSOR语法定义、主要用在Transact_SQL 脚本、存储过程和触发器中。Transact_SQL 游标主要用在服务器上,由从客户端发送给服务器的Transact_SQL 语句或是批处理、存储过程、触发器中的Transact_SQL 进行管理。 Transact_SQL 游标不支持提取数据块或多行数据。 (2)API 游标 API 游标支持在OLE DB, ODBC 以及DB_library 中使用游标函数,主要用在服务器上。每一次客户端应用程序调用API 游标函数,MS SQL SEVER 的OLE DB 提供者、ODBC驱动器或DB_library 的动态链接库(DLL) 都会将这些客户请求传送给服务器以对API游标进行处理。 (3)客散乎户游标 客户游标主要是当在客户机上缓存结果集时才使用。在客户游标中,有一个缺省的结果集被用来在客户机上缓存整个结果集。客户游标仅支持静态游标而非动态游标。由于服务器游标并不支持所有的Transact-SQL 语句或批处理,所以客户游标常常仅被用作服务器游标的辅助。因为在一般情况下,服务器游标能支持绝大多数的游标操作。 由于API 游标和Transact-SQL 游标使用在服务器端,所以被称为服务器游标,也被称为后台游标,而客户端游标被称为前台游标。在本章中我们主要讲述服务器(后台)游标。select count(id) from info select * from info --清除所有记录

C. SQL中自己建的游标和索引在哪里能看到

楼主 游标你是看不物神亮到的 游标都包含在对象里瞎吵面 比如 存储过程
索引可以看 select * from sys.indexes
name就是索引名称 通过id就可以找到表名 然后直接在表下面能找罩宽索引
生成创建索引脚本即可

D. 什么是游标使用游标的基本步骤是什么

游标(cursor)是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果。每个游标区都有一个名字,用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理。游标提供了一敬拦种对从表中检索出的数据进行操作的灵活手段。x0dx0a使用游标的基本步骤: x0dx0a1、声明游标。把游标与T-SQL语句的结果集联系起来。 x0dx0a2、打开游标。 x0dx0a3、使用游标操作数据。 x0dx0a4、关闭游标。x0dx0a功能:x0dx0a1、游标提供了一种对从表中检索出的数据进行操作的灵活手段,就本质而言,游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。x0dx0a2、游标能够实现按与传统程序读取平面文件类似的方式处理来自基础表的结果集,从而把表亮察胡中数据以平面文件的形式呈现给程序。x0dx0a3、游标把作为面向集合的数据库管理系统和面向行的程序设计两者联系起来,使两个数据处理方式能够进行沟通。x0dx0a种类:x0dx0a1、Transact_SQL游标x0dx0aTransact_SQL游标是由DECLARECURSOR语法定义、主要用在Transact_SQL脚本、存储过程和触发器中。Transact_SQL游标主要用在服务器上,由从客户没高端发送给服务器的Transact_SQL语句或是批处理、存储过程、触发器中的Transact_SQL进行管理。Transact_SQL游标不支持提取数据块或多行数据。x0dx0a2、API游标x0dx0aAPI游标支持在OLEDB,ODBC以及DB_library中使用游标函数,主要用在服务器上。每一次客户端应用程序调用API游标函数,MSSQLSEVER的OLEDB提供者、ODBC驱动器或DB_library的动态链接库(DLL)都会将这些客户请求传送给服务器以对API游标进行处理。x0dx0a3、客户游标x0dx0a客户游标主要是当在客户机上缓存结果集时才使用。在客户游标中,有一个缺省的结果集被用来在客户机上缓存整个结果集。客户游标仅支持静态游标而非动态游标。由于服务器游标并不支持所有的Transact-SQL语句或批处理,所以客户游标常常仅被用作服务器游标的辅助。因为在一般情况下,服务器游标能支持绝大多数的游标操作。由于API游标和Transact-SQL游标使用在服务器端,所以被称为服务器游标,也被称为后台游标,而客户端游标被称为前台游标。

E. SQL游标怎么用

具体用法如下:

1、打开sqlservermanagementstudio,选中要操作的数据库;

2、新建一个查询;

3、声明一隐野个游标,以及一些需要用到的临时变量;

4、使用游标,首先打开游标,并将游标下移一行;

5、循环取出数据,知郑并进行相应的逻辑处理,其中的变量保存在@id和@name中;

6、每次循环的结束,要把游灶猛喊标下移;

7、要关闭游标,并释放内存。

注意事项:游标名称不能以@开头。

F. 在数据库中创建的游标在哪里找得到

游标通常在存储过程中有使用,竖历创建的游标在使用余前搜完后是需要关闭和释放
-- 关闭游标close m_cursor--释放游标deallocate m_cursor
所以是找不到游标文件的,用完就关闭释放了悔枣
翻翻有关游标的资料你就知道了

G. 使用游标的基本步骤是什么

游标(cursor)是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果。每个游标区都有一个名字,用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由棚闹主语言进一步处理。
create proc cursorTest
@_id int=0,
@_name varchar(50)=''
as--创建游标
declare @cursor cursor--设定游标欲操作的数据集
set @cursor=cursor for
select _id,_name from users
open @cursor--打开游标
fetch next from @cursor into @_id,@_name--移动游标指向到第一条数据,提取第一条数据存放在变量中
激罩while(@@fetch_status=0)begin--如果上一次操作明和闹成功则继续循环
print @_name--操作提出的数据
fetch next from @cursor into @_id,@_name--继续提下一行
end
close @cursor--关闭游标
deallocate @cursor--删除游标

H. 如何使用SQL Server游标

关闭游标的语句很简单:CLOSE CustomerCursor; 使用Where子句子 我们可以动态地定义游标中的Where子句的参数,例如在本例中我们是直接定义了查询省份是北京的记录,但也许在应用中我们要使用一个下拉式列表框,由用户来选择要查询的省份,我们该怎样做呢? 我们在前面曾经提到过,DECLARE语句的作用只是定义一个游标,在OPEN语句中这个游标才会真正地被执行。了解了这些,我们就可以很方便地实现这样的功能,在DECLARE的Where子句中加入变量作参数,如下所示:DECLARE CustomerCursor CURSORFORSELCECT acct_no,name,balance FROM customer WHERE province=:ls_province; ∥定义ls_province的值 OPEN CustomerCursor; 游标的类型 同其它变量一样,我们也可以定义游标的访问类型:全局、共享、实例或局部,游标变量的命名规范建议也同其它变量一样。--声明游标declare my_cursor cursor keyset forselect*from info --删除游标资源deallocate my_cursor --打开游标,在游标关闭或删除前都有效open my_cursor --关闭游标close my_cursor --声明局部变量declare@idint,@namevarchar(20),@addressvarchar(20) --定位到指定位置的记录fetch absolute 56488from my_cursor into@id,@name,@addressselect@idas id,@nameas name,@addressas address --定位到当前记录相对位置记录fetch relative -88from my_cursor into@id,@name,@addressselect@idas id,@nameas name,@addressas address --定位到当前记录前一条fetch prior from my_cursor into@id,@name,@addressselect@idas id,@nameas name,@addressas address --定位到当前记录后一条fetchnextfrom my_cursor into@id,@name,@addressselect@idas id,@nameas name,@addressas address --定位到首记录fetch first from my_cursor into@id,@name,@addressselect@idas id,@nameas name,@addressas address --定位到尾记录fetch last from my_cursor into@id,@name,@addressselect@idas id,@nameas name,@addressas address 实例:use database1 declare my_cursor cursor scroll dynamic /**//*scroll表示可随意移动游标指 针(否则只能向前),dynamic表示可以读写游标(否则游标只读)*/forselect proctname from proct open my_cursor declare@pname sysname fetchnextfrom my_cursor into@pnamewhile(@@fetch_status=0) begin print'Proct Name: '+@pname fetchnextfrom my_cursor into@pname endfetch first from my_cursor into@pnameprint@pname/**//*update proct set proctname='zzg' where current of my_cursor *//**//*delete from proct where current of my_cursor */close my_cursor deallocate my_cursor 4.游标的高级技巧 尽管目前基于SQL语句的后台数据库所支持的语言都大致相当,但对游标的支持却有着一些差异,例如对滚动游标支持。所谓滚动游标,就是程序员可以指定游标向前后任意一个方向滚动。如在Informix中,您甚至还可以将游标滚向结果集开头或末尾,使用的语句分别是FETCH FIRST,FETCH LAST、FETCH PRIOR和FETCH NEXT。当程序员用FETCH语句,其缺省是指FETCH NEXT。由于滚动是在数据库后台实现的,所以滚动游标为用户编程提供了极大的方便。 对游标支持的另一个不同是可修改游标。上述游标的使用都是指只读游标,而象Oracle、Sybase等数据库却另外支持可作修改的游标。使用这样的数据库,您可以修改或删除当前游标所在的行。例如修改当前游标所在行的用户的余额,我们可以如下操作:UPDATE customer SET balance=1000WHERECURRENTof customerCursor; 删除当前行的操作如下: WHERECURRENTOF CustomerCursor; 但是如果您当前使用的数据库是Sybase,您需要修改数据库的参数,将游标可修改的值定为1,才能执行上述操作。这一赋值在连接数据库的前后进行均可。

I. PL/SQL Developer的游标

游标的定义为:用游标来指代一个DML SQL操作返回的结果集。即当一个对数据库的查询操作返回一组结果集时,用游标来标注这组结果集,以后通过对游标的操作来获取结果集中的数据信息。这里特别提出游标的概念,是因为它在PL/SQL的编程中非常的重要。
定义游标的语法结构如下: cursor cursor_name is SQL语句; 在本文第一段代码中有一句话如下: cursor c_emp is select * from employee where emp_id=3; 其含义是定义一个游标c_emp,代表employee表中所有emp_id字段为3的结果集。
当需要操作该结果集时,必须完成三步:打开游标、使用fetch语句将游标里的数据取出、关闭游标。游标用来处理从数据库中检索的多行记录(使用SELECT语句)。利用游标,程序可以逐个地处理和遍历一次检索返回的整个记录集。 为了处理SQL语句,Oracle将在内存中分配一个区域,这就是上下文区。这个区包含了已经处理完的行数、指向被分析语句的指针,整个区是查询语句返回的数据行集。游标就是指向上下文区句柄或指针。
1 显示游标被用于处理返回多行数据的SELECT 语句,游标名通过CURSOR….IS 语句显示地赋给SELECT 语句。 在PL/SQL中处理显示游标所必需的四个步骤:
1)声明游标;CURSOR cursor_name IS select_statement
2)为查询打开游标;OPENcursor_name
3)取得结果放入PL/SQL变量中; FETCH cursor_name INTO list_of_variables; FETCH cursor_name INTO PL/SQL_record;
4)关闭游标。CLOSE cursor_name 注意:在声明游标时,select_statement不能包含INTO子句。当使用显示游标时,INTO子句是FETCH语句的一部分。
2隐式游标所有的隐式游标都被假设为只返回一条记录。 使用隐式游标时,用户无需进行声明、打开及关闭。PL/SQL隐含地打开、处理,然后关掉游标。
例如: ……. SELECT studentNo,studentName INTO curStudentNo,curStudentName FROM StudentRecordWHEREname=’gg’; 上述游标自动打开,并把相关值赋给对应变量,然后关闭。执行完后,PL/SQL变量curStudentNo,curStudentName中已经有了值。

J. Sql中的游标是干嘛的

游标(cursor)是结果集的逻辑扩展,可以看做指向结果集的一个指针,通过使用游标,应用程序可以逐行访问并处理结果集。

ResultSet对象用于接收查询结果,next()方法用于判断结果集是否为空,相当于指针,指向结果集下一个数据。

(10)sql的游标和程序设计在哪里扩展阅读:

游标的生命周期包含有五个阶段:声明游标、打开游标、读取游标数据、关闭游标、释放游标。

1、声明游标语法

DECLARE cursor_name CURSOR [ LOCAL | GLOBAL ]

[ FORWARD_ONLY | SCROLL ]
[ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ]
[ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ]
[ TYPE_WARNING ]
FOR select_statement
[ FOR UPDATE [ OF column_name [ ,...n ] ] ]

2、打开游标语法

open [ Global ] cursor_name | cursor_variable_name

3、读取游标数据语法

Fetch[ [Next|prior|Frist|Last|Absoute n|Relative n ]from ][Global] cursor_name[into @variable_name[,....]]

4、关闭游标语法

close [ Global ] cursor_name | cursor_variable_name

5、释放游标语法

deallocate cursor_name