Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 可以在pl sql中参数化查询吗?_Oracle_Plsql_Sql Injection - Fatal编程技术网

Oracle 可以在pl sql中参数化查询吗?

Oracle 可以在pl sql中参数化查询吗?,oracle,plsql,sql-injection,Oracle,Plsql,Sql Injection,此处编写的存储过程当前将参数与查询相关联: SELECT * FROM Names WHERE Name = ' || prmName || ' ORDER BY ' || prmSortField 是否可以在存储过程中参数化此查询?可能像: query = 'select * From Names Where Name = @name Order By ' || prmSortField call(query, prmName) 注意:如果您想知道我们为什么

此处编写的存储过程当前将参数与查询相关联:

   SELECT * 
     FROM Names 
    WHERE Name = ' || prmName || ' 
 ORDER BY ' || prmSortField
是否可以在存储过程中参数化此查询?可能像:

query = 'select * From Names Where Name = @name Order By ' || prmSortField
call(query, prmName)
注意:如果您想知道我们为什么这样做,我们的sp有两个常用参数:sortFieldIndex和sortDirection。因为我们不能直接参数化这些,所以查询是动态生成的。但其他参数使查询打开以供注入。因此,我正在寻找一种方法来参数化一些参数。

当然。使用

当然。使用


对于具有绑定值的动态查询,请执行以下操作:

procedure p (prmName varchar2, prmSortField varchar2)
is
    query varchar2(100);
    rc sys_refcursor;
    names_rec names%rowtype;
begin
    query = 'select * From Names Where Name = :name Order By ' || prmSortField
    open rc for query using prmName;
    loop
        fetch rc into names_rec;
        exit when rc%notfound;
        -- process this row
    end loop;
    close rc;
end;

对于具有绑定值的动态查询,请执行以下操作:

procedure p (prmName varchar2, prmSortField varchar2)
is
    query varchar2(100);
    rc sys_refcursor;
    names_rec names%rowtype;
begin
    query = 'select * From Names Where Name = :name Order By ' || prmSortField
    open rc for query using prmName;
    loop
        fetch rc into names_rec;
        exit when rc%notfound;
        -- process this row
    end loop;
    close rc;
end;

有关支持可选参数值但使用sys上下文的更详细的过程,请查看Asktom.com上的以下帖子


有关支持可选参数值但使用sys上下文的更详细的过程,请查看Asktom.com上的以下帖子


OP的prmSortField变量呢?如何在没有动态查询的情况下参数化排序字段?OP的prmSortField变量如何?如何在没有动态查询的情况下参数化排序字段?