我听说SELECT *在编写SQL命令时使用通常是不好的做法,因为它对SELECT您特别需要的列更有效.
如果我需要SELECT表中的每一列,我应该使用
SELECT * FROM TABLE
Run Code Online (Sandbox Code Playgroud)
要么
SELECT column1, colum2, column3, etc. FROM TABLE
Run Code Online (Sandbox Code Playgroud)
在这种情况下,效率真的重要吗?SELECT *如果你确实需要所有的数据,我认为内部会更优化,但我说的是没有真正了解数据库.
我很想知道在这种情况下最佳做法是什么.
更新:我可能应该指定我真正想要做的唯一情况SELECT *是当我从一个表中选择数据时我知道所有列总是需要被检索,即使添加了新列.
鉴于我所看到的反应,这仍然是一个坏主意,SELECT *永远不应该用于更多技术原因,我曾经考虑过.
我在使用 Oracle 存储过程时遇到了问题。该if else语句没有检查字符串是否为空。还是我做错了?
create or replace PROCEDURE GET_ICECREAM
(
flavour IN VARCHAR2,
toppings IN VARCHAR2,
cursorIC OUT sys_refcursor
)
AS
dynaQuery VARCHAR2(8000);
BEGIN
dynaQuery := 'SELECT price FROM tblIceCream';
IF flavour <> '' THEN
dynaQuery := dynaQuery || ' WHERE flavour LIKE '''%''' '
ENDIF
OPEN cursorIC FOR dynaQuery;
END GET_ICECREAM;
Run Code Online (Sandbox Code Playgroud)
免责声明:以上不是实际的存储过程。我正在使用一个示例来理解 Oracle 中 if else 和本机动态 SQL 的概念。这样你们更容易理解;)
我关注asp 文本框:
<asp:TextBox ID="txtPasswrod" runat="server"></asp:TextBox>
Run Code Online (Sandbox Code Playgroud)
在这个文本框下面我有错误消息标签,它最初是隐藏的,直到文本框的js验证失败:
<label id="errorMsg" for="pwd" style="display:none">error</label >
Run Code Online (Sandbox Code Playgroud)
以下是文本框验证的js:
function validation()
{
var pwd = document.getElementById("txtPasswrod").value;
if (pwd == null || pwd == "")
{
document.getElementById("error").style.display = 'block';
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
以下是asp按钮,其OnClientClick事件我调用的是validation()函数:
<asp:Button ID="btnSubmit" runat="server" Text="Submit"
onclick="btnSubmit_Click" OnClientClick="validation()"/>
Run Code Online (Sandbox Code Playgroud)
验证工作正常,但问题是,当文本框为空并且我的验证失败时,js应该阻止页面回发,但是js允许页面回发并且我的验证jst变得无用.
请告诉我如何 …