复制类存储过程 例如:sp_addarticle创建项目并将其添加到发布中。此存储过程在发布服务器的发布数据库上执行。安全管理类存储过程 例如:sp_addrole在当前数据库创建新的Microsoft SQL Server角色。sp_password添加或更改Microsoft SQL Server登录的密码。
存储过程的类型系统存储过程:以“sp_”为前缀标识,存储在“master”数据库中,提供对系统表的检索和管理功能。扩展存储过程:以“xp_”为前缀标识,通过执行外部DLL来实现功能。本地存储过程:创建在用户数据库中。临时存储过程:主要用于用户会话中临时存储的功能。
第三,临时存储过程分为本地临时存储过程和全局临时存储过程。本地临时存储过程以“#”作为其名称的第一个字符,只能在创建它的用户会话中执行。而全局临时存储过程以“##”开始,存储在tempdb数据库中,可以被任何连接到服务器的用户执行,无需特定权限。
结果集有必要放在表里面返回来,直接返回游标就可以了,结果集也可以看作是张表的。
首先需要知道“另一个存储过程”的结果集的所有列的类型。
RunProcedure这个方法,调用存储过程,storedProcName 存储过程名 parameters 存储过程参数列表 tableName 这个表名指的是,你的存储过程对某一张表做了数据的保存或修改,然后通过这个参数来把这个表的数据查出来,fill方法的作用就是 select “tableName”这个表,然后把结果集放入DataSet中并返回。
输出结果:1,1 PL/SQL procedure successfully completed 你的那个ORA-01031: insufficient privileges,是权限不足的问题。
直接把结果集写在 from 后面就可以了。
1、当 SET XACT_ABORT 为 ON 时,如果执行 Transact-SQL 语句产生运行时错误,则整个事务将终止并回滚。当 SET XACT_ABORT 为 OFF 时,有时只回滚产生错误的 Transact-SQL 语句,而事务将继续进行处理。如果错误很严重,那么即使 SET XACT_ABORT 为 OFF,也可能回滚整个事务。OFF 是默认设置。
2、是滴,默认是隐式的开始与提交,出现异常会默认自动回滚到开始位置,任何一个使用JDBC操作数据库的SQL命令,在默认情况下,隐式开始与提交事务。
3、、使用存储过程执行事物,需要开启XACT_ABORT参数(默认值为Off),将该参数设置为On,表示当执行事务时,如果出错,会将transcation设置为uncommittable状态,那么在语句块批处理结束后将回滚所有操作;如果该参数设置为Off,表示当执行事务时,如果出错,出错的语句将不会执行,其他正确的操作继续执行。
4、一般回滚操作都是写在异常处理,或是sql的最后。如果你的sql中出现错误 ,代码会立即跳转到错误处理代码上执行,比如回滚,但紧接在错误行之后的代码不会执行的。
5、答案是:任何情况下的事务嵌套.只要任何地方出错,全回滚.事务组合一系列任务为一个执行单元。每个事务以特定的任务开始,以特定的任务结束。当所有的任务成功时事务成功,当任何一个任务失败时,事务失败。所以一个事务只有两个结果:失败或成功。
6、存储过程里面, 一般只写 DML 的语句。也就是基本的 SELECT . INSERT, DELETE , UPDATE 这一类的语句。如果你要在存储过程里面, 执行 DDL 语句。也就是 CREATE, ALTER, DROP 这一类的语句。那么需要使用动态 SQL 来处理。
当在存储过程中使用 RETURN 语句时,此语句可以指定返回给调用应用程序、批处理或过程的整数值。如果 RETURN 未指定值,则存储过程返回 0。大多数存储过程按常规使用返回代码表示存储过程的成功或失败。没有发生错误时存储过程返回值 0。任何非零值表示有错误发生。
SQL Server中存储过程的返回值不是通过return语句返回的(return语句是在用户自定义函数中使用的),而是通过存储过程的参数来返回,在定义存储过程的参数时使用关键字output来指定此参数是返回值。而在调用存储过程时,也必须使用关键字给接收返回值的变量,这样才能在调用时获得存储过程的返回值。
可以在存储过程里增加参数进行返回,如:create proc aaa(@ReturnValue varchar(100) output)……你在存储过程里设置@ReturnValue的值就行了。VB里运行存储过程,然后访问ReturnValue参数就行了。如果是返回多列数据,就直接在存储过程里select表,VB里运行存储过程后,可以获取返回表。
语句并用 @@ROWCOUNT 来检测是否有发生更改的行。UPDATE authors SET au_lname = JonesWHERE au_id = 999-888-7777IF @@ROWCOUNT = 0 print Warning: No rows were updated在你的存储过程里意思为如果insert 语句影响行了,说明插入成功,即返回值不为0,返回0代表插入不成功。
是否有事务回滚,我曾经遇到返回-6,我当时是事务回滚错了,代码顺序出问题,造成事务先提交,尔后又回滚,所以返回了-6 。
打开SQL Server Management Studio找到存储过程所在的数据库。在对象资源管理器详细信息中可以看到存储过程的文件夹。点击打开这个文件夹可以,在搜索中输入要搜索的存储过程名称。同样也可以在数据库目录结构处选择存储过程右键菜单中的筛选设置。在这里可以进行详细的条件筛选设置。
1、把结果集写入结构相同的临时表中。a).创建一个临时表#temp,和存储过程的结果集结构一致。b).把结果集插入临时表中:INSERT INTO #TEMP EXEC PROCc).从临时表中搜值: select * from #tempd).现在就可以从#temp表中取值进行随意操作了。
2、只能在存储过程中处理,先按返回内容生成空临时表;注意加一个显示顺序字段,用于结果排序。 用求和的方式,计算出期初,并在临时表中插入此记录,顺序号为0。 将明细插入临时表中,顺序号为2。 计算日合计、日累计的变量值,将结果插入临时表中,顺序号为3。
3、语法是错误的。-- INSERT INTO EXEC sp,这个语法肯定遇到报错了。-- 要想作类似操作,至少也要将sp定义成“表值函数”才能将返回的结果值作直接调用 PIVOT出来的结果列,未必与预建的表,字段上匹配。方案:》在动态语句中,插入临时表。
1、如果是返回一个值,可以在存储过程里增加参数进行返回,如:create proc aaa(@ReturnValue varchar(100) output)……你在存储过程里设置@ReturnValue的值就行了。VB里运行存储过程,然后访问ReturnValue参数就行了。
2、打开SQL Server Management Studio找到存储过程所在的数据库。在对象资源管理器详细信息中可以看到存储过程的文件夹。点击打开这个文件夹可以,在搜索中输入要搜索的存储过程名称。同样也可以在数据库目录结构处选择存储过程右键菜单中的筛选设置。在这里可以进行详细的条件筛选设置。
3、当在存储过程中使用 RETURN 语句时,此语句可以指定返回给调用应用程序、批处理或过程的整数值。如果 RETURN 未指定值,则存储过程返回 0。大多数存储过程按常规使用返回代码表示存储过程的成功或失败。没有发生错误时存储过程返回值 0。任何非零值表示有错误发生。