表关联的存储过程查询?取得一个表的查询结果
一、Oracle 如何通过表查询存储过程名
1、第一种方法,打开PL/SQL,新建sql窗口。
2、输入过程的用户名及过程名,例如xxx.xxxx_xxxx,选中右击,选择view查看,选择edit编辑。
3、同样在PL/SQL中,打开Tool目录,确保Object Browser前面已打勾,然后口窗口右侧可以找到Objects小窗口,找到Procedures目录。
4、Objects小窗口中,点击<current user>,选择自己过程所在目录,如果是当前用户,则不用选择,然后展开Procedures目录,目录下即是过程名,可以找到自己需要的过程,右击选择view查看,选择edit编辑即可。
二、...结果数据合并更新到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.姓名);
三、MYSQL***存储过程***取得一个表的查询结果
假设A表有3个字段,ID, DATA1,DATA2
简单的话可以不使用存储过程,比如:
select* form A where ID in(select ID from A where DATA1 between 0 and 100)
如果你的应用比较复杂,在嵌套中还有复杂的运算,存储过程可以如下例子:
CREATE PROCEDURE test(in_start int,in_end int)
BEGIN
DECLARE ids TEXT;
select GROUP_CONCAT(ID) into ids from A where DATA1 between in_start and in_end;
select* from A where FIND_IN_SET(ID,ids)> 0;
END
注: in_start, in_end是DATA1的筛选范围。后面一个select直接返回一个表
直接用SQL和使用存储过程各有利弊,存储过程在你使用大量查询及SQL运算的时候效率很高,而且存储过程一旦写入数据库会被自动编译运行速度比较快,而SQL是每次执行都需要被编译一次的。但是存储过程的调试比较麻烦,不像你使用编程语言和SQL的时候可以单步调试。而且如果没有熟练掌握存储过程的效率优化情况下,使用存储过程可能比使用SQL更慢。
四、sql 查询某个表在哪些存储过程(SP)中使用
想请问你创建的是全局临时表和临时表?
如果是本地普通临时表,本地会话没有结束的话,是可以的,会话一旦消失,就查询不到了
如果是全局临时表,则用exec
sp_spaceused是可以的
附:
全局临时表和本地普通临时表区别:
普通临时表的名称前面有一个编号符(#table_name),而全局临时表的名称前面有两个编号符(##table_name),本地普通临时表仅在当前会话中可见;全局临时表在所有会话中都可见