我有一个绑定到Oracle数据库的表单。
表单用于键入数据。
当用户拥有表格连接的所有权限时,一切都很完美。但是,当用户只有写访问权限时,表单无法绑定。
以下是我用来获取所有表单控件绑定到的数据表的代码:
Private Function GetDataTable(ByVal TableName As String, ByVal SQL As String) As DataTable
Dim Command As OracleCommand
Dim DataSet As New DataSet
Dim DataTable As DataTable
Dim TempDataAdapter As OracleDataAdapter
Command = New OracleCommand(SQL, OracleObject.Connection)
TempDataAdapter = New OracleDataAdapter(Command)
TempDataAdapter.FillSchema(DataSet, SchemaType.Source, TableName)
TempDataAdapter.Fill(DataSet, TableName)
DataTable = DataSet.Tables(TableName)
Return DataTable
End Function
要使用它,我会这样做:
GetDataTable('Table1','SELECT * FROM Table1')
此代码完美无缺,但当用户没有选择权限时,该行:
TempDataAdapter.FillSchema(DataSet, SchemaType.Source, TableName)
抛出异常,这是正常的,因为代码按请求执行选择查询。
但是,当用户只有写权限时,如何将表单绑定到表?
答案 0 :(得分:0)
您可以使用返回Ref-Cursor的函数来执行此操作,然后用户必须只具有该函数的执行权限。
示例:
create or replace function GetTable(the_table in varchar2) return sys_refcursor is
res sys_refcursor;
begin
open res for 'select * from '||the_table;
return res;
end;