当用户只具有INSERT权限时,如何将表单绑定到数据库

时间:2014-01-12 23:28:45

标签: vb.net oracle

我有一个绑定到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)

抛出异常,这是正常的,因为代码按请求执行选择查询。

但是,当用户只有写权限时,如何将表单绑定到表?

1 个答案:

答案 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;