游标中用到的函数,就是前一篇文章中创建的那个函数。另外,为了方便使用,把游标放在存储过程中,这样就可以方便地直接使用存储过程来执行游标了。1createprocedureUpdateHKUNo--存储过程里面放置游标2as3begin45declareUpdateHKUNoCursorcursor--声明一个游标,查询满足条件的数据6forselectpsn_codefrompersonwheretype='E'andhku_noisnull78openUpdateHKUNoCursor--打开910declare@noToUpdatevarchar(20)--声明一个变量,用于读取游标中的值11fetchnextfromUpdateHKUNoCursorinto@noToUpdate1213while@@fetch_status=0--循环读取14begin15--print@noToUpdate16updatepersonsethku_no=dbo.GetExtUserHKUNo()wherepsn_code=@noToUpdate17fetchnextfromUpdateHKUNoCursorinto@noToUpdate18end1920closeUpdateHKUNoCursor--关闭2122deallocateUpdateHKUNoCursor--删除2324end2526--execUpdateHKUNo另外,判断数据库中是否存在某一存储过程(Sqlserver2000):ifexists(select*fromsysobjectswherename='UpdateHKUNo'andxtype='P')print'yse'elseprint'no'一、无参数的存储过程的创建、修改、执行、删除createprocedureMyprocedure--创建,修改时是alterasbegin--dosomethingselect*fromsysobjectsendexecuteMyprocedure--执行dropprocedureMyprocedure传入参数,还有另外一种形式createprocProcWithParam--创建带有传入参数的存储过程@idint--参数没有用括号标记asbeginselect*fromsysobjectswhereid=@id--使用参数endexecProcWithParam4--执行时,在右边附带参数dropprocProcWithParam三、带传出参数的存储过程(如果要传入、传出的,则把这个和前面第二个综合就好啦):)createprocProuWithParamOut(@datedatetimeout)--不带out,将被默认为传入参数!asbeginselect@date=crdatefromsysobjectswhereid=1--传出参数只能是一个值,如果不带条件地查找,得到的数值是一个列表,将只取最后一个值enddeclare@datedatetime--声明一个变量,用于接收存储过程传出的参数execProuWithParamOut@dateout--调用时,需要右边附带用于接收传出参数的变量select@dateas'存储过程传出的参数'--取得传出的参数,并自定义列名注:传出参数的声明也可以像传入参数那样写,不需括号createprocProuWithParamOut--不带out,将被默认为传入参数!@datedatetimeoutasbeginselect@date=crdatefromsysobjectswhereid=4--传出参数只能是一个值,如果不带条件地查找,得到的数值是一个列表,将只取最后一个值end