是否可以在plsql中执行动态的sql并将结果返回到sys_refcursor?我已经粘贴了我的尝试,但dosnt缝合工作,这是我的java应用程序的错误
ORA-01006:绑定变量不存在ORA-06512:在"LIVEFIS.ERC_REPORT_PK",第116行ORA-06512:在第1行
但这可能是由java误解的东西,一切接缝编译精细soo我不确定.
procedure all_carers_param_dy (pPostcode in carer.postcode%type, pAge Number
,pReport out SYS_REFCURSOR) is
begin
declare
lsql varchar2(500) :='SELECT c.id FROM carer c, cared_for cf,carer_cared_for ccf '
||' where c.id = ccf.carer_id (+)'
||' AND cf.id (+) = ccf.cared_for_id';
begin
if pPostcode is not null and pAge <= 0 then
lsql := lsql||' AND c.postcode like ''%''|| upper(pPostcode)||''%''';
elsif pPostcode is null and pAge > 0 then
lsql := lsql||' AND ROUND((MONTHS_BETWEEN(sysdate,c.date_of_birth)/12)) = pAge';
elsif pPostcode is not null and …Run Code Online (Sandbox Code Playgroud) 这是我的问题.我有一个名为'user_has_personalities'的多对多表.在我的应用程序中,用户可以拥有许多个性,个性可以属于许多用户.
该表有两个整数列,user_id和personality_id.
我需要做的是让所有用户至少拥有我提供给查询的所有个性(一组可变大小的个性化用户).
举个例子,我想让所有具有ids 4,5,7个性的用户,但也可以拥有其他一些个性.但我需要查询来处理可变数量的通缉个性ID,例如4,5,7,9,10.
有任何想法吗?
我刚刚重构了我的数据库,以便在Postgres 8.2中使用分区.现在我的查询性能有问题:
SELECT *
FROM my_table
WHERE time_stamp >= '2010-02-10' and time_stamp < '2010-02-11'
ORDER BY id DESC
LIMIT 100;
Run Code Online (Sandbox Code Playgroud)
表中有4500万行.在分区之前,这将使用反向索引扫描并在达到限制时立即停止.
分区后(在time_stamp范围内),Postgres对主表和相关分区进行完整索引扫描并合并结果,对它们进行排序,然后应用限制.这需要太长时间.
我可以解决它:
SELECT * FROM (
SELECT *
FROM my_table_part_a
WHERE time_stamp >= '2010-02-10' and time_stamp < '2010-02-11'
ORDER BY id DESC
LIMIT 100) t
UNION ALL
SELECT * FROM (
SELECT *
FROM my_table_part_b
WHERE time_stamp >= '2010-02-10' and time_stamp < '2010-02-11'
ORDER BY id DESC
LIMIT 100) t
UNION ALL
... and so on ... …Run Code Online (Sandbox Code Playgroud) 如何在grails中执行普通的sql.我需要使用sql查询在数据库中插入新记录.
我们如何通过使用HQL和gorm关系来实现这一目标.
谢谢
我使用数百万条用于搜索结果的记录对表进行索引.我通过ASC或DESC订单显示结果.我的问题是列应该有索引吗?我在那张桌子上还有2个索引.性能如何通过制作或不制作该列的索引来影响?
我正在尝试计算用户表中一组不同城市和国家/地区的出现次数.
该表的类似于:
userid city country
------ --------- --------------
1 Cambridge United Kingdom
2 London United Kingdom
3 Cambridge United Kingdom
4 New York United States
Run Code Online (Sandbox Code Playgroud)
我需要的是每个城市和国家/地区的列表,其中包含出现次数:
Cambridge, United Kingdom, 2
London, United Kingdom, 1
New York, United States, 1
Run Code Online (Sandbox Code Playgroud)
目前我运行SQL查询来获取不同的对:
$array = SELECT DISTINCT city, country FROM usertable
Run Code Online (Sandbox Code Playgroud)
然后在PHP中将其读入数组,并循环遍历数组,运行查询以计算数组中每行的每个匹配项:
SELECT count(*) FROM usertable
WHERE city = $array['city']
AND country = $array['country']
Run Code Online (Sandbox Code Playgroud)
我假设我对SQL缺乏掌握的东西 - 这样做的正确方法是什么,最好没有PHP的干预?
消息1101,级别17,状态10,行12由于文件组"DEFAULT"中的磁盘空间不足,无法为数据库"TEMPDB"分配新页面.通过删除文件组中的对象,向文件组添加其他文件或为文件组中的现有文件设置自动增长来创建必要的空间.
这用简单的英语意味着什么?
UPD:管理员更改了标题,我找到了解决方案:http: //code.google.com/p/php-sql-parser/
我正在尝试修改SQL数组的SQL查询.
例如: SELECT col_name FROM tbl_name WHERE col_name> 0;
必须返回类似的内容:
array(
'table' => 'tbl_name',
'value' => array('col_name'),
'where' => array('col_name > 0')
);
Run Code Online (Sandbox Code Playgroud)
我发现了这个.你知道更好的解决方案吗?
在psql中,如果有人输入'select*from user',你会得到类似下面的内容:
current_user
--------------
postgres
Run Code Online (Sandbox Code Playgroud)
在这种情况下用户是什么?
我试图写一个更新日期的查询,只有当我更新组的LINE_CD为50.我会这样做吗?
UPDATE EMPLOYER_ADDL
SET EMPLOYER_ADDL.GTL_UW_APPRV_DT = EMPLOYER_ADDL.DNTL_UW_APPRV_DT
WHERE EXISTS
(
SELECT EMP_PLAN_LINE_INFO.LINE_CD
FROM EMP_PLAN_LINE_INFO
Where EMP_PLAN_LINE_INFO.GR_NBR = EMPLOYER_ADDL.GR_NBR and
EMP_PLAN_LINE_INFO.LINE_CD = 50
)
Run Code Online (Sandbox Code Playgroud) sql ×10
mysql ×3
performance ×2
postgresql ×2
sql-server ×2
grails ×1
indexing ×1
join ×1
many-to-many ×1
oracle ×1
orm ×1
partitioning ×1
php ×1
plsql ×1
sql-order-by ×1
tempdb ×1
view ×1