字段存储过程图解 存储过程如何写
一、如何快速查找使用了某个字段的所有存储过程
当一个系统中使用了很多的表,并且存在大量的存储过程,当数据库中的某个表删除了某个字段,那么相应的存储过程也需要改动,但是我们不知道哪些存储过程使用了该字段,那我们该怎么办?我们可以从之前的文档一个一个查找使用了该字段的存储过程,但是这样效率很多,而且还容易出错,我们可以使用下面的方法来查找所有使用了某个字段的存储过程。如下的函数:
[sql] view plaincopyprint?
01.GO
02.SELECT obj.Name存储过程名, sc.TEXT存储过程内容
03.FROM syscomments sc
04.INNER JOIN sysobjects obj ON sc.Id= obj.ID
05.WHERE sc.TEXT LIKE'%'+'字段名'+'%'
06.AND TYPE='P'
07.GO
GO
SELECT obj.Name存储过程名, sc.TEXT存储过程内容
FROM syscomments sc
INNER JOIN sysobjects obj ON sc.Id= obj.ID
WHERE sc.TEXT LIKE'%'+'字段名'+'%'
AND TYPE='P'
GO
下面举一个例子,比如查找数据库中所有使用了AdId这个字段的所有存储过程。
[sql] view plaincopyprint?
01.USE KyCms
02.GO
03.SELECT obj.Name存储过程名, sc.TEXT存储过程内容
04.FROM syscomments sc
05.INNER JOIN sysobjects obj ON sc.Id= obj.ID
06.WHERE sc.TEXT LIKE'%'+'AdID'+'%'
07.AND TYPE='P'
08.GO
USE KyCms
GO
SELECT obj.Name存储过程名, sc.TEXT存储过程内容
FROM syscomments sc
INNER JOIN sysobjects obj ON sc.Id= obj.ID
WHERE sc.TEXT LIKE'%'+'AdID'+'%'
AND TYPE='P'
GO
二、删除标记结果数据合并更新到B表的一个字段数据里***存储过程如何写
--假设B表只有2个字段(姓名,信息汇总),且姓名是关联条件
--合并更新表B
merge into表B b
--使用表A
using表A a
--通过[姓名]关联匹配
on(a.姓名= b.姓名)
--能匹配到的
when matched then
update set信息汇总= a.省份||a.城市||a.县区||a.详细地址||','||a.手机||'-'||a.姓名
--不能匹配到的(可以不需要)
when not matched then
insert(姓名,信息汇总)
values(a.姓名,a.省份||a.城市||a.县区||a.详细地址||','||a.手机||'-'||a.姓名);
三、gbase查询存储过程用到的表字段
gbase存储过程- CSDN。
存储过程(Stored Procedure)是一组已经事先编译好,能够完成特定功能的SQL语句**,是一个独立的数据库对象。存储过程类似于高级语言中的函数,可被用户的应用程序调用,执行。不同的是,存储过程经过编译后存放在服务器端,这为开发C/S和B/S应用程序提供了强有力的支持。由于存储过程是已经编译好的代码,所以执行时不必再次进行编译,从而提高了程序的执行效率。GBase 8a MPP Cluster存储过程异常处理参考手册 GBase 8a MPP Cluster支持保存存储过程的异常信息功能,同时也能获得 DML*作的影响行数。诊断信息主要分两类: 1)报错信息,主要包括错误数、错误号、错误状态、错误信息。 2) DML*作影响的行数。
四、存储过程返回指定的字段
如果是oracle或者db2之类的,可以先通过sequnce获取id,再做保存,如果是SQL Server,可以用:IDENT_CURRENT返回为任何会话和任何作用域中的特定表后生成的标识值。IDENT_CURRENT不受作用域和会话的限制,而受限于指定的表。IDENT_CURRENT返回为任何会话和作用域中的特定表所生成的值。
@@IDENTITY返回为当前会话的所有作用域中的任何表后生成的标识值。
SCOPE_IDENTITY返回为当前会话和当前作用域中的任何表后生成的标识值
SCOPE_IDENTITY和@@IDENTITY返回在当前会话中的任何表内所生成的后一个标识值。但是,SCOPE_IDENTITY只返回插入到当前作用域中的值;@@IDENTITY不受限于特定的作用域。
或者根据表的唯一条件查找出来。
我个人一般不建议在SQL Server里面用自动增长的id