您好,Oracle存储过程中的参数名与表名相同,请问如何处理?TYPE n_rights IS REF CURSOR;
PROCEDURE pro_n_pin_getrights(
pageIndex NUMBER,
pageMax NUMBER,
name VARCHAR2,
pageCount OUT NUMBER,
roles OUT n_rights)
AS
v_count NUMBER;
BEGIN
OPEN roles FOR
SELECT id, name FROM RIGHT
WHERE id BETWEEN pageMax*(pageIndex-1)+1 AND pageMax*pageIndex AND
RIGHT.NAME LIKE NVL(name,'')
ORDER BY id; SELECT COUNT(*) INTO v_count FROM RIGHT;
pageCount := CASE WHEN MOD(v_count,pageMax) = 0 THEN pageCount/pageMax
ELSE v_count/pageMax+1 END;
EXCEPTION
WHEN others THEN
pageCount :=-1; END;ROLE表结构:CREATE TABLE "RIGHT"(
id NUMBER PRIMARY KEY,
name VARCHAR2(128) NOT NULL)
PROCEDURE pro_n_pin_getrights(
pageIndex NUMBER,
pageMax NUMBER,
name VARCHAR2,
pageCount OUT NUMBER,
roles OUT n_rights)
AS
v_count NUMBER;
BEGIN
OPEN roles FOR
SELECT id, name FROM RIGHT
WHERE id BETWEEN pageMax*(pageIndex-1)+1 AND pageMax*pageIndex AND
RIGHT.NAME LIKE NVL(name,'')
ORDER BY id; SELECT COUNT(*) INTO v_count FROM RIGHT;
pageCount := CASE WHEN MOD(v_count,pageMax) = 0 THEN pageCount/pageMax
ELSE v_count/pageMax+1 END;
EXCEPTION
WHEN others THEN
pageCount :=-1; END;ROLE表结构:CREATE TABLE "RIGHT"(
id NUMBER PRIMARY KEY,
name VARCHAR2(128) NOT NULL)
没有出错,就是查询的时候好像没有达到预期约束的效果:
即RIGHT.NAME LIKE NVL(name,'')相当于
RIGHT.NAME LIKE NVL(RIGHT.NAME,''),后面那个RIGHT.NAME我本来是想要存储过程的参数name作为比较结果的。