gpt4 book ai didi

asp.net - 使用 mvc 和 oracle 从多个表的数据库中搜索

转载 作者:行者123 更新时间:2023-12-02 10:38:36 25 4
gpt4 key购买 nike

我有一个要求,我无法跟踪如何实现此功能。因为这就是我想要的。

我将有一个搜索图标,单击该图标将打开一个文本框。现在,用户可以将任何文本插入文本框,然后单击搜索,它将从Oracle中由12-15个表组成的数据库表中进行搜索

所以我的问题是,如何进行此操作以及这样做在逻辑上是否正确。或者请建议任何其他方式来实现这一点。

请提出建议

更新

I have done this for One table, but I want this to work for as many tables I have in future.

PROCEDURE GET_SEARCH_DATA
(
P_INPUTTEXT IN NVARCHAR2,
P_RETURN OUT SYS_REFCURSOR
)

AS

BEGIN
OPEN P_RETURN FOR

SELECT DISTINCT APP_MST_ID, APPLICATIONNAME, PROJECTNO, VSS_FOLDER_LOC
FROM APPLICATION_MASTER
WHERE APPLICATIONNAME LIKE '%'|| P_INPUTTEXT || '%'
OR PROJECTNO LIKE '%' || P_INPUTTEXT || '%'
OR VSS_FOLDER_LOC LIKE '%' || P_INPUTTEXT || '%';

END;

最佳答案

15 个表 * 每个表 10 列 = 150 列(例如)。您想搜索其中哪些?他们全部?只有其中一些吗?

如果是 ALL,您将循环遍历所有表和列(USER_TABLES 与 USER_TAB_COLUMNS 连接)并搜索该字符串。如果是某些列,您可以将这些列包含到游标 FOR 循环的 SELECT 语句的 WHERE 子句中。您选择的任何选项,都像是动态 SQL。

这是我如何执行此操作的示例,搜索具有名为 TELEPHONE(电话号码)列的所有表;使用 LIKE 运算符搜索字符串为“654”,因此它返回包含 TELEPHONE 列且电话号码包含 654 的所有表。结果通过 DBMS_OUTPUT.PUT_LINE 显示(因为我从 SQL*Plus 运行它)。您的输出可能会是其他内容。

看看,必要时进行调整。

DECLARE
l_str VARCHAR2(500);
l_cnt NUMBER := 0;
BEGIN
FOR cur_r IN (SELECT u.table_name, u.column_name
FROM user_tab_columns u, user_tables t
WHERE u.table_name = t.table_name
AND u.column_name = 'TELEPHONE'
)
LOOP
l_str := 'SELECT COUNT(*) FROM ' || cur_r.table_name ||
' WHERE ' || cur_r.column_name || ' like (''%654%'')';

EXECUTE IMMEDIATE (l_str) INTO l_cnt;

IF l_cnt > 0 THEN
dbms_output.put_line(l_cnt ||' : ' || cur_r.table_name);
END IF;
END LOOP;
END;

关于asp.net - 使用 mvc 和 oracle 从多个表的数据库中搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48514526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com