前几天同事写存储过程遇到这么一个问题:
select t1.a into t_code from table1 t1 ----t_code是定义的varchar2
紧接着
select count(1) from table2 t2 where t2.t_code = t_code
他就发现查询的结果是table2的全量,where条件没起作用。
本来我以为是select into 语法有作用域的限制。因为
select t1.a into t_code from table1 t1 之后,又跟着一个insert commit;
但是去掉insert commit,where条件还是不起作用。
所以就怀疑变量名t_code和table2表的t_code字段名是一样的。
结果换了变量名后,就可以了。
分享到:
相关推荐
INTO var1, var2 FROM SomeTable WHERE condition; END; ``` 在Oracle中,如果想要创建新表并复制数据,可以先创建表,再使用`INSERT INTO SELECT`。 总结起来,`SELECT INTO` 和 `INSERT INTO SELECT` 在...
FETCH cursor_name INTO var1, var2; EXIT WHEN cursor_name%NOTFOUND; -- 处理var1和var2的值 END LOOP; CLOSE cursor_name; END; ``` 3. **%TYPE属性**:这个属性在声明变量时非常有用,它可以确保变量的...
FETCH c1 INTO var1, var2; CLOSE c1; END; ``` **DB2:** ```sql DECLARE c1 CURSOR FOR SELECT * FROM table; OPEN c1; FETCH c1 INTO var1, var2; CLOSE c1; ``` **注意:** Oracle和DB2中的游标语法类似,但...
FETCH cursor_name INTO var1, var2; EXIT WHEN cursor_name%NOTFOUND; -- 执行处理行的代码 END LOOP; CLOSE cursor_name; END; ``` 2. **异常处理**: - **异常**:在Oracle中,异常是程序执行过程中遇到...
FETCH cursor1 INTO var1, var2; EXIT WHEN cursor1%NOTFOUND; -- 打印或处理结果 END LOOP; CLOSE cursor1; -- 处理第二个结果集 OPEN cursor2; LOOP FETCH cursor2 INTO var3, var4; EXIT WHEN cursor2...
SELECT col1, col2 INTO var1, var2 FROM table WHERE condition; EXCEPTION WHEN NO_DATA_FOUND THEN -- 处理没有找到数据的情况 END; ``` 如果查询结果没有记录,会抛出NO_DATA_FOUND异常。 3. **IF判断**...
特别是在Oracle数据库环境下,如何高效地执行批量更新,成为了提高系统性能的关键因素之一。本文将详细介绍Oracle中实现批量更新的四种常见方法,并通过示例代码来具体说明每种方法的应用场景及优缺点。 #### 二、...
using (var command = new OracleCommand("INSERT INTO MyTable (BlobColumn) VALUES (:BlobValue)", connection)) { command.Parameters.Add(new OracleParameter(":BlobValue", OracleDbType.Blob)).Value = ...
insert into userman.users values(1,'Admin',1,'Admin'); insert into userman.users values(2,'Lee',1,'Lee'); insert into userman.users values(3,'User',2,'User'); insert into userman.users values(4,'Zxh',...
SELECT col1, col2 INTO var1, var2 FROM table WHERE condition; -- 异常处理 EXCEPTION WHEN NO_DATA_FOUND THEN -- 处理没有数据的情况 END; ``` 2. **IF判断**:根据条件执行不同的代码块。 ```sql IF...
FETCH cursor_name INTO var1, var2; EXIT WHEN cursor_name%NOTFOUND; -- 处理每一行数据 END LOOP; CLOSE cursor_name; END; ``` 游标有以下几个重要的属性: - `%FOUND`:当执行`FETCH`后,如果游标...
jdbcUrl=jdbc:oracle:thin:@193.0.10.110:1521:MG01 username=DBUSROMS1 password=**** count=1 数据库连接 DELETE FROM SELLMAIL WHERE SMKEY = :B1 当前正执行SQL jdbcUrl=jdbc:oracle:thin:@193.0.10.110:1521:...
_, err = tx.Exec("INSERT INTO your_table (col1, col2) VALUES (?, ?)", value1, value2) if err != nil { // 处理错误 // 可选择回滚事务 tx.Rollback() } else { // 提交事务 err = tx.Commit() if err !=...
INTO var1, var2 FROM table_name WHERE condition; -- 异常处理 EXCEPTION WHEN NO_DATA_FOUND THEN -- 处理逻辑 END; ``` #### 3. `IF`条件语句 `IF`语句用于根据条件执行不同的代码块。 ```sql ...
select * bulk collect into var_array from t_stock; for i in 1..var_array.count loop dbms_output.put_line(var_array(i)); end loop; end; ``` 在上面的示例中,我们声明了一个可变数组 `type_array`,它的...
FETCH cursor_name INTO var1, var2; EXIT WHEN cursor_name%NOTFOUND; -- 当前查询行的处理逻辑 END LOOP; CLOSE cursor_name; EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('没有找到匹配的...
ORACLE的数据字典是数据库的重要组成部分之一,它随着数据库的产生而产生, 随着数据库的变化而变化, 体现为sys用户下的一些表和视图。数据字典名称是大写的英文字符。 数据字典里存有用户信息、用户的权限信息、...
FETCH cursor_name INTO var_column1, var_column2; EXIT WHEN cursor_name%NOTFOUND; -- 处理每一行数据 dbms_output.put_line(var_column1 || ', ' || var_column2); END LOOP; CLOSE cursor_name; END;...
FETCH cursor_name INTO var1, var2; EXIT WHEN cursor_name%NOTFOUND; -- 处理var1和var2的值 DBMS_OUTPUT.PUT_LINE(var1 || ', ' || var2); END LOOP; CLOSE cursor_name; END; ``` 在这个例子中,我们...