1. RocketMQ消息存储源码分析
procer发送消息过来后根据netty监听端口调用DefaultMessageStore#putMessage方法,rocketMQ默认是异步刷盘,首先会把消息写入到内存中,然后经过一段时间再刷到磁盘里。
当消息生产者提交的消息存储在CommitLog文件中,ConsumerQueue、IndexFile需要及时更新,否则消息无法及时被消费,根据消息属性查找消息也会出现较大延迟。RocketMQ通过开启一个线程ReputMessageService来准实时转发CommitLog文件更新事件,相应的任务处理器根据转发的消息及时更新ConsumerQueue、IndexFile文件。
当我们调用发送消息接口后,会调用DefaultMessageStore#asyncPutMessage
RocketMQ的存储是基于JDK NIO的内存映射机制(MappedByteBuffer)的,消息存储首先将消息追加到内存,再根据配置的刷盘策略在不同时间进行刷写磁盘。
2. 如何用plsql查看存储过程的源码!!!
1、首先双击plsql图标,进入登录界面,输入用户名和密码,输送数据库实例名。
3. 如何查询存储过程的源程序和查询一个数据库的存储过程名称
如果你使用的是sql
server
的话,利用系统提供的系统存储过程可以帮助你实现你的需求
查看存储过程的源代码:
sp_helptext
'@procere_name'
--引号内填入你想要查看源码的存储过程名称
查询一个数据库的存储过程名称:
在查询分析器中,执行系统存储过程:
sp_stored_proceres
希望可以帮助到你。
4. 如何用plsql查看存储过程的源码
通过plsql登录,界面左边的菜单有个proceres菜单,(由上致下第四个),点开,选中某个存储过程右键---view
5. dbeaver怎么打开查看链接的 数据库的 存储过程源码啊
1、右击新建连接2、选择Oracle3、将要填的数据都填好了,下拉框选sid,点测试,通过就ok了4、狂点下一步,最后完成。注:无需安装oracle客户端。只有这个dbeaver就可以,只是需要个驱动包这个不用说。不会加驱动可以追问
6. 求ASP+SQL存储过程源代码
create procere proc_newaccount
@name varchar(10),
@pid varchar(20),
@telephone varchar(20),
@openmoney money,
@savingtype varchar(10),
@address varchar (50)='' --默认
as
declare @error int
set @error=0
declare @cardid varchar(19)
exec proc_rand @cardid output
set @error=@error+@@error
while exists (select * from cardinfo where cardid=@cardid)
exec proc_rand @cardid output
set @error=@error+@@error
insert into userinfo (customername,pid,telephone,address) values (@name,@pid,@telephone,@address)
set @error=@error+@@error
declare @customerid int
select @customerid=customerid from userinfo where customername=@name
set @error=@error+@@error
insert into cardinfo (cardid,savingtype,openmoney,balance,customerid) values (@cardid,@savingtype,@openmoney,@openmoney,@customerid)
set @error=@error+@@error
declare @opendate datetime
select @opendate=opendate from cardinfo where cardid=@cardid
set @error=@error+@@error
if @error=0
begin
print '开户成功! 您的卡号为:'+@cardid
print '开户日期:'+convert(varchar(25),@opendate)+' 开户金额:'+convert(varchar(20),@openmoney)
end
else
print '开户失败,请重新输入!'
go
7. Sql 存储过程 实例 贴源码就好了
例子:
CREATE
PROCEDURE
order_tot_amt
@o_id
int,
@p_tot
int
output
AS
SELECT
@p_tot
=
sum(Unitprice*Quantity)
FROM
orderdetails
WHERE
ordered=@o_id
GO
例子说明:
该例子是建立一个简单的存储过程order_tot_amt,这个存储过程根据用户输入的定单ID号码(@o_id),由定单明细表
(orderdetails)中计算该定单销售总额[单价(Unitprice)*数量(Quantity)],这一金额通过@p_tot这一参数输出给调用这一存储过程的程序。
8. 存储过程的实例
数据库存储过程
数据库存储过程的实质就是部署在数据库端的一组定义代码以及SQL。将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来,那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execute,即可自动完成命令。
利用SQL的语言可以编写对于数据库访问的存储过程,其语法如下:
CREATE PROC[EDURE] procere_name [;number]
[
{@parameter data_type} ][VARYING] [= default] [OUTPUT]
]
[,...n]
[WITH
{
RECOMPILE
| ENCRYPTION
| RECOMPILE, ENCRYPTION
}
]
[FOR REPLICATION]
AS
sql_statement [...n]
[ ]内的内容是可选项,而()内的内容是必选项,
例:若用户想建立一个删除表tmp中的记录的存储过程Select_delete可写为:
Create Proc select_del As
Delete tmp
例:用户想查询tmp表中某年的数据的存储过程
create proc select_query @year int as
select * from tmp where year=@year
在这里@year是存储过程的参数
例:该存储过程是从某结点n开始找到最上层的父亲结点,这种经常用到的过程可以由存储过程来担当,在网页中重复使用达到共享。
空:表示该结点为顶层结点
fjdid(父结点编号)
结点n 非空:表示该结点的父亲结点号
dwmc(单位名称) CREATEprocsearch_dwmc@dwidoldint,@dwmcresultvarchar(100)outputasdeclare@stopintdeclare@resultvarchar(80)declare@dwmcvarchar(80)declare@dwidintsetnocountonset@stop=1set@dwmc=""select@dwmc=dwmc,@dwid=convert(int,fjdid)fromjtdwwhereid=@dwidoldset@result=rtrim(@dwmc)if@dwid=0set@stop=0while(@stop=1)and(@dwid<>0)beginset@dwidold=@dwidselect@dwmc=dwmc,@dwid=convert(int,fjdid)fromjtdwwhereid=@dwidoldif@@rowcount=0set@dwmc=""elseset@result=@dwmc+@resultif(@dwid=0)or(@@rowcount=0)set@stop=0elsecontinueendset@dwmcresult=rtrim(@result)使用execpro-name[pram1pram2.....]SQL Server中存储过程
sql语句执行的时候要先编译,然后执行。存储过程就是编译好了的一些sql语句。用的时候直接就可以用了。
在SQL Server的查询分析器中,输入以下代码:
declare @tot_amt int
execute order_tot_amt 1,@tot_amt output
select @tot_amt
以上代码是执行order_tot_amt这一存储过程,以计算出订单编号为1的订单销售金额,我们定义@tot_amt为输出参数,用来承接我们所要的结果。
Oracle中的存储过程
1.创建过程
与其它的数据库系统一样,Oracle的存储过程是用PL/SQL语言编写的能完成一定处理功能的存储在数据库字典中的程序。
语法:
create [or replace] procere procere_name
[ (argment [ { in| in out }] type,
argment [ { in | out | in out } ] type
{ is | as }
<类型.变量的说明>
(注:不用 declare语句 )
Begin
<执行部分>
exception
<可选的异常处理说明>
end;
1.1 这里的IN表示向存储过程传递参数,OUT表示从存储过程返回参数。而IN OUT 表示传递参数和返回参数;
1.2 在存储过程内的参数只能指定参数类型;不能指定长度;
1.3 在AS或IS 后声明要用到的变量名称和变量类型及长度;
1.4 在AS或IS 后声明变量不要加declare 语句。
2.使用过程
存储过程建立完成后,只要通过授权,用户就可以在SQLPLUS 、Oracle开发工具或第三方开发工具来调用运行。Oracle 使用CALL 语句来实现对存储过程的调用。
语法:
call procere_name( parameter1, parameter2…);
3.开发过程
如今的几大数据库厂商提供的编写存储过程的工具都没有统一,虽然它们的编写风格有些相似,但由于没有标准,所以各家的开发调试过程也不一样。下面编写PL/SQL存储过程、函数、包及触发器的步骤如下:
3.1 编辑存储过程源码使用文字编辑处理软件编辑存储过程源码,要用类似WORD文字处理软件进行编辑时,要将源码存为文本格式。
3.2 对存储过程程序进行解释在SQLPLUS或用调试工具将 存储过程程序进行解释;
在SQL>下调试,可用start 或get 等Oracle命令来启动解释。如:
SQL>start c:stat1.sql
如果使用调试工具,可直接编辑和点击相应的按钮即可生成存储过程。
3.3 调试源码直到正确我们不能保证所写的存储过程达到一次就正确。所以这里的调试是每个程序员必须进行的工作之一。在SQLPLUS下来调试主要用的方法是:
1.使用 SHOW ERROR命令来提示源码的错误位置;
2.使用 USER_ERRORS数据字典来查看各存储过程的错误位置。
3.4 授权执行权给相关的用户或角色如果调试正确的存储过程没有进行授权,那就只有建立者本人才可以运行。所以作为应用系统的一部分的存储过程也必须进行授权才能达到要求。 在SQLPLUS下可以用GRANT命令来进行存储过程的运行授权。
语法:
GRANT system_privilege | role TO user | role | PUBLIC
[WITH ADMIN OPTION]
或
GRANT object_privilege | ALL column ON schema.object
TO user | role | PUBLIC WITH GRANT OPTION
其中
system_privilege: 系统权限
role: 角色名
user: 被授权的用户名
object_privilege: 所授予的权限名字,可以是
ALTER
DELETE
EXECUTE
INDEX
INSERT
REFERENCES
SELECT
UPDATE
Column: 列名
schema: 模式名
object: 对象名
4.数据字典
USER_SOURCE 用户的存储过程、函数的源代码字典
DBA_SOURCE 整个系统所有用户的存储过程、函数的源代码字典
ALL_SOURCE 当前用户能使用的存储过程(包括其她用户授权)、函数的源代码字典
USER_ERRORS 用户的存储过程、函数的源代码存在错误的信息字典
临时表
(针对SQL2000/2005)
可以创建本地和全局临时表。本地临时表仅在当前会话中可见;全局临时表在所有会话中都可见。
本地临时表的名称前面有一个编号符 (#table_name),而全局临时表的名称前面有两个编号符 (##table_name)。
SQL 语句使用 CREATE TABLE 语句中为 table_name 指定的名称引用临时表:
CREATE TABLE #MyTempTable (cola INT PRIMARY KEY)
INSERT INTO #MyTempTable VALUES (1)
如果本地临时表由存储过程创建或由多个用户同时执行的应用程序创建,则 SQL Server 必须能够区分由不同用户创建的表。为此,SQL Server 在内部为每个本地临时表的表名追加一个数字后缀。存储在 tempdb 数据库的 sysobjects 表中的临时表,其全名由 CREATE TABLE 语句中指定的表名和系统生成的数字后缀组成。为了允许追加后缀,为本地临时表指定的表名 table_name 不能超过 116 个字符。
除非使用 DROP TABLE 语句显式除去临时表,否则临时表将在退出其作用域时由系统自动除去:
当存储过程完成时,将自动除去在存储过程中创建的本地临时表。由创建表的存储过程执行的所有嵌套存储过程都可以引用此表。但调用创建此表的存储过程的进程无法引用此表。
所有其它本地临时表在当前会话结束时自动除去。
全局临时表在创建此表的会话结束且其它任务停止对其引用时自动除去。任务与表之间的关联只在单个 Transact-SQL 语句的生存周期内保持。换言之,当创建全局临时表的会话结束时,最后一条引用此表的 Transact-SQL 语句完成后,将自动除去此表。
9. 如何获取存储过程和函数的源代码
plsql developer中:打开一个sql窗口,
输入存储过程名,右键单击该存储过程名,
会有菜单弹出,选择 "View spec & body"或者"Edit spec & body",
后者是可以直接修改存储过程的。
如果是在sqlplus中,可以通过查询表all_source中的text字段,查询出源代码。
10. 如何获取存储过程和函数的源代码
opencv都带有这个函数的代码,你在用的时候,选择函数,然后右键选择”go
to
denifition
of
cvcalopticalflowhs"--->然后就会跳
到定义cvcalopticalflowhs的定义文件,就会跳到cv.h头文件来(说明cvcalopticalflowhs在cv.h文件中定义的),然后你去cv.cpp文件,按"ctrl+f"
输入函数名进行搜索,就能找到cvcalopticalflowhs函数的源文件了。