PB中调用存储过程

合集下载

pb 存储过程刷新

pb 存储过程刷新

pb 存储过程刷新一、PB存储过程的概念及作用PB存储过程是PowerBuilder开发工具中的一种特殊对象,用于保存一系列的SQL语句和逻辑操作,并通过调用的方式在应用程序中执行。

存储过程的主要作用是提高应用程序的性能和可维护性。

存储过程可以实现以下功能:1. 封装和隐藏复杂的SQL语句:存储过程可以将复杂的SQL语句封装起来,使得应用程序的代码更加简洁和易于维护。

2. 提高数据库的性能:存储过程可以在数据库中进行预编译,减少了每次执行SQL语句的解析和优化时间,提高了数据库的执行效率。

3. 实现业务逻辑的复用:多个应用程序可以共享同一个存储过程,实现业务逻辑的复用,减少了代码的冗余。

4. 加强数据安全性:存储过程可以设置权限控制,只允许特定的用户或角色执行,提高了数据的安全性。

二、PB存储过程的刷新方法PB存储过程的刷新是指在存储过程发生变更后,将最新的版本应用到应用程序中。

下面将介绍两种常用的刷新方法。

1. 通过PowerBuilder的开发环境刷新在PowerBuilder的开发环境中,可以直接对存储过程进行修改和刷新。

具体步骤如下:(1)打开PowerBuilder开发环境,找到存储过程对象所在的库。

(2)在库中找到对应的存储过程对象,双击打开。

(3)对存储过程进行修改,并保存修改。

(4)重新编译整个应用程序或者只编译存储过程对象,以使修改生效。

2. 通过数据库管理工具刷新另一种刷新存储过程的方法是通过数据库管理工具进行操作。

具体步骤如下:(1)打开数据库管理工具,连接到相应的数据库。

(2)找到存储过程所在的数据库对象,并选择编辑。

(3)对存储过程进行修改,并保存修改。

(4)重新启动应用程序,或者通过应用程序的重载功能使修改生效。

三、注意事项在刷新PB存储过程时,需要注意以下几点:1. 在修改存储过程之前,应该先备份原有的存储过程,以防止修改错误导致数据丢失。

2. 修改存储过程时应该谨慎操作,避免引入逻辑错误或歧义。

VB.net数据库编程(06):调用存储过程(带参和不参数情况)

VB.net数据库编程(06):调用存储过程(带参和不参数情况)

数据库编程(06):调用存储过程(带参和不参数情况)先建立一个无参的存储过程,为下面第一个无参调用作准备:[sql]view plaincopyprint?e Sales2.go3.create procedure sp_getGrade4.as5.select * from grade where 数学>606.go注:go是作为前面批处理的结束情况。

因为前面执行是要花时间的,如果后面执行的要依赖前面结果,没有go的话,有可能前面没有执行完,当然后面依赖此结果的语句就会执行错误。

所以go 的作用很大。

再复习的过程:一、连接数据库二、发出指令。

command默认是commandType.text。

因为是存储过程,所以应指明为commandType.StoreProcedure三、填充结果集,显示。

所以代码如下:[vb]view plaincopyprint?1.Imports System.Data.SqlClient2.3.Public Class Form14.Dim cn As SqlConnection5.Dim cm As SqlCommand6.Dim da As SqlDataAdapter7.Dim ds As DataSet8.9.Private Sub Button1_Click(sender As Object, e As EventAr gs) Handles Button1.Click10.Try = New SqlConnection("Data Source=(local);Initial C atalog=Sales;Integrated Security=false;User ID=sa;Password=12 3456;").Open() '此句不省13.cm = New SqlCommand("sp_getGrade", cn)mandType = CommandType.StoredProcedure '指明为存储过程15.da = New SqlDataAdapter(cm)16.ds = New DataSet()17.da.Fill(ds, "grade")18.DataGridView1.DataSource = ds.Tables("grade").Close()20.Catch ex As Exception21.MessageBox.Show("执行失败")22.End Try23.End Sub24.End Class结果如下:====================================== ========================================= =================下面是一个带参数的存储过程的调用。

pb大小写转换的存储过程

pb大小写转换的存储过程
*****W_Mdi的Close事件代码:
destroy inv_WallPaper
ulong iul_hbitmap
ulong iul_hmdi
ulong iul_dcmdi
ulong iul_hDCMem
s_bitmap istr_Bitmap
boolean ib_center = FALSE
long bmwidth
long bmheight
long bmwidthbytes
Event Name:ue_Paint()
Return Type:None
//代码:
if IsValid(inv_WallPaper) then
inv_WallPaper.event post ue_Paint()
long bmplanes
long bmbitspixel
blob bmbits
inv_wallpaper.of_SetBitmap ( 'Maps\Dataauditing.bmp' ) //图片路径和图片名
inv_WallPaper.of_SetWallPaper(true)
*定义第二个用户自定义事件:Ue_paint()
FUNCTION ulong CreateCompatibleDC(ulong hDC) LIBRARY "Gdi32.dll"
FUNCTION ulong GetDC(ulong handle) LIBRARY "User32.dll"
FUNCTION ulong SelectObject(ulong hDC, ulong hGDIObj) LIBRARY "Gdi32.dll"

VB调用执行存储过程

VB调用执行存储过程

关键字:数据库;SQL Server2000;存储过程;应用程序;VB存储过程存储过程是存储在服务器上的一组预编译的Transact-SQL语句,是一种封装重复任务操作的方法,支持用户提供的变量,具有强大的编程功能。

它类似于DOS系统中的BAT文件。

在BAT文件中,可以包含一组经常执行的命令,这组命令通过BAT文件的执行而被执行。

同样的道理,可以把要完成某项任务的许多Transact-SQL语句写在一起,组织成存储过程的形式,通过执行该存储过程就可以完成这项任务。

存储过程与BAT文件又有差别,即存储过程已经进行了预编译。

1、创建存储过程的方法在Transact-SQL语言中,创建存储过程可以使用CREATE PROCEDURE语句,其语法形式如下:CREATE PROC[EDURE] procedure_name[;number][{@parameter data_type}[VARYING][=default][OUTPUT]]],…n][WITH{RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}][FOR REPLICATION]AS sql_statement[…n]在上面的CREATE PROCEDURE语句中,方括号"[ ]"中的内容是可选的,花括号"{}"中的内容是必须出现的,不能省略,[,…n]表示前面的参数样式,可以重复出现。

竖线"|"表示两边的选项可以任选一个。

下面分析该语句中各种选项的含义。

CREATE PROCEDURE是关键字,也可以写成CREATE PROC。

procedure_name是该存储过程的名称,名称可以是任何符合命名规则的标示符。

名称后的[;number]参数表示可以定义一系列的存储过程名称,这些存储过程的数量由number 指定。

参数名称可以使用@parameter data_type来指定。

关于PB和存储过程的问题

关于PB和存储过程的问题

关于PB和存储过程的问题
存储过程实为一个解决很多的问题的好办法,以经有近一个星期的时间了,被卡在存储过程的问题上了,存储过程在后台执行一切正常,功能为传递两个视图名和视图中的字段名,在存储过程中创建一个表,形成交叉报表的型式。

可是在后台执行的时候正常,在前台调用该存储过程的时候却是总也无法正常创建该表。

用事件跟踪器来跟踪,判断为或者是临时表的数据为空,或者是没有连接上字段。

但一直未能得其解。

今天,在老师的指导下,终于有了结果,原来在PB前台执行存储过程传参数或者是在存储过程中调用的时候,所用的参数一定不能为视图,PB执行存储过程时,视图在存储过程中被解释为一条SELECT语句,结果造成上述问题,将参数和操作对象改为表后,问题解决了!。

调用存储过程的通用方法

调用存储过程的通用方法

调用存储过程的通用方法[摘要] 在中存储过程的调用模式几乎一样,不同之处是每个存储过程的参数不同,所以每调用一次存储过程重复代码很多,这在做项目时很麻烦。

笔者经过实践实现了在中调用存储过程的简单方法,该方法只需要提供要调用的存储过程名字和提供具体的参数值就可实现任何存储过程的调用。

[关键词] ;存储过程;系统表;信息结构视图笔者在用做项目时,很多时候要调用数据库中的存储过程,因为使用存储过程使得程序在调试、升级、维护方面都变得方便,时间久了,笔者发现存储过程的调用模式几乎一样,差别只是在于调用不同的存储过程的参数不同,所以每调用一次存储过程都要写一大堆几乎一样的代码,这在做项目时很麻烦,所以就想找一种简便的调用存储过程的方法。

笔者通过查找资料和编程实践实现了在中调用存储过程的通用方法。

该方法只需要提供要调用的存储过程名字和提供具体的参数值就可实现任何存储过程的调用。

在中存储过程分为有返回值的和无返回值的,不论哪种存储过程,它的调用方法都可以概括为下面的几步:(1) 声明一个Sql Connection实例。

(2) 声明一个Sql Command实例,并且设置其Connection属性为刚声明的Sql Connection实例,设置CommandName为存储过程名,CommandType为存储过程。

(3) 向声明的Sql Command实例的Parameters集合中添加所有的存储过程调用需要的参数。

(4) 声明Sql DataAdapter和DataSet,设置Sql DataAdapter的SelectCommand 属性为2中声明的Sql Command实例,再调用其Fill方法来把返回的行集填充到DataSet中。

(5) 关闭Sql Connection实例。

(6) 释放声明的各个实例。

调用不同的存储过程,只是第二步的CommandName和第三步中的参数不同。

我们要写一个通用的调用存储过程的方法,该方法只需要提供要调用的存储过程名字和提供具体的参数值就可实现任何存储过程的调用,那么就要自动实现如何根据存储过程名来得到它所有的参数信息,再根据这些参数信息自动创建各个参数。

pb调用存储过程

pb调用存储过程

pb调用存储过程使用PB调用存储过程PB(PowerBuilder)是一款流行的客户端开发工具,常用于开发Windows应用程序。

在开发过程中,很多情况下需要调用数据库中的存储过程来进行数据操作。

本文将介绍如何使用PB调用存储过程。

第一步,连接数据库在PB中,首先需要连接数据库。

连接数据库需要指定数据库类型、服务器地址、数据库名称、用户名、密码等信息。

在PB的Database Painter中进行设置即可。

连接成功后,可以在Database Painter中看到数据库中的所有表、视图、存储过程等对象。

第二步,创建数据窗口在PB中,数据窗口是用于显示和编辑数据的主要工具。

数据窗口可以从数据库中选择表、视图、存储过程等对象,并进行数据的查询、修改、删除等操作。

在PB的DataWindow Painter中,可以创建数据窗口。

第三步,选择存储过程在DataWindow Painter中,可以选择从存储过程中获取数据。

在“Select”菜单中选择“Stored Procedure”,然后在弹出的对话框中选择要执行的存储过程。

在对话框中可以输入存储过程的参数,也可以在运行时动态输入。

第四步,调用存储过程在PB中,可以使用以下代码调用存储过程:```DECLARE sp MyStoredProcsp = CREATE MyStoredProcsp.SetTransObject(SQLCA)sp.param1 = "value1"sp.param2 = "value2"sp.Retrieve()```以上代码中,MyStoredProc是存储过程的名称。

通过CREATE语句创建存储过程对象,然后使用SetTransObject方法设置事务对象,使用param1、param2等属性设置存储过程的参数,最后调用Retrieve方法执行存储过程并获取结果。

第五步,处理结果存储过程执行完成后,可以通过以下代码获取结果:```result = sp.colname```以上代码中,colname是存储过程返回的列名,result是存储过程返回的结果。

pb调用oracle存储过程

pb调用oracle存储过程
pb调用oracle存储过程
DECLARห้องสมุดไป่ตู้ f_fh_name_bm PROCEDURE FOR f_fh_name(:参数1,:参数2,......,:参数N) ;
EXECUTE f_fh_name_bm;
FETCH f_fh_name_bm INTO :返回值1,:返回值2,....:返回值N;
)
USING SQLCA;
EXECUTE TheCompChargeVerifyePro;
if sqlca.sqlcode < 0 then
lasterrtext = 'Source:t_comp_needpay_system->thecompchargeverify:调用单位缴费到帐复核过程时出错:' + sqlca.sqlerrtext
ParmCycle => :ls_AAE002,
ParmInsure => :ls_AAE140,
ParmFlag => :ls_aka_append,
ParmOperator => :ThisCurrEmpPurData.oper_name
4 到现在还不能使用,打开application对象, 选择additional Properties,选择Variables标签,把SQLCA中原来的Transaction改为oraproc
5 使用方法
int t=0
t = SQLCA.getAge('21010319490630249x')
if SQLCA.SQLCode<>0 then
MessageBox("1",SQLCA.SQLErrText)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

PB中调用存储过程
2010-03-09 14:33
PB中调用存储过程
PB技术 2009-11-13 10:35:55 阅读78 评论0 字号:大中小

DECLARE ProcedureName PROCEDURE FOR StoredProcedureName
@Param1=Value1, @Param2=Value2,... {USING TransactionObject} ;
注意:ProcedureName为PB中的变量,StoredProcedureName为数据库中的存储过程名,Param
为数据库存储过程参数名,Value为PB中的变量。

⑵ EXECUTE ProcedureName ;
⑶ FETCH Procedure INTO HostVariableList ;
⑷ CLOSE ProcedureName ;
例子:
DATETIME ldt_cdt
DECLARE getdate PROCEDURE FOR p_get_date;
EXECUTE getdate;
FETCH getdate INTO :ldt_cdt;
CLOSE getdate;
RETURN ldt_cdt
//THE END
如果存储过程有返回值,则需要使用动态SQL语句,利用SQLSA,SQLDA
: 之类的全局变量。

你可以用关键字“Dynamic SQL”来查找帮助。

通过测试发现,在PB中调用存储过程跟数据库的连接方式有关系,在此测试了通过直连和ODBC两种方式的调用方法:
String ls_tablename="TestTable"
String ls_columnname="TestColumn"
Long ll_newid
//直连方式
DECLARE sp_test PROCEDURE FOR dbo.up_getnewid @TableName
= :ls_tablename,@TableColumn = :ls_columnname;
////ODBC
//DECLARE sp_test PROCEDURE FOR
dbo.up_getnewid(:ls_tablename,:ls_columnname);
//PB调用带返回值的存储过程:////声明储存过程:
CREATE PROCEDURE proc_pslx ( @NAME varchar(2) ,@count integer output) AS
select @count = Count(*) from wo_info where whs_name=@NAME ;
GO
////在PB中调用:
Integer li_rtn
DECLARE lpro_test PROCEDURE FOR proc_pslx @name='C1', @count = :li_rtn OUTPUT;
EXECUTE lpro_test;
Fetch lpro_test INTO :li_rtn;
messagebox("",string(li_rtn))。

相关文档
最新文档