只有既懂SQL SERVER又懂Oracle的人才能帮你搞定。。
解决方案 »
- Oracle数据导入SQLSERVER报错
- ORACLE sql 优化 运行速度太慢 要40秒 慢在 sum()块
- 配置一个侦听器具有两个侦听地址和配置两个侦听器分别监视两个地址有什么不同?
- using 格式化字符串的问题
- 怎么在控制文件中添加多重引号
- 函数名作为表的一个字段,如何通过这个字段调函数?
- 如何调用存储过程(返回记录集)
- PLSQL如何获取时间段内的每一天插入一个表中
- 请问imp/exp如何实现将数据导入到另外一张表中?两张表结构相同
- 我在ASP中用ODBC连接ORACLE,表中有CLOB类型,只要是SELECT CLOB型数据,就出现如下错误,高手请进
- imp问题
- 有ORACLE初学者教程吗
CREATE FUNCTION F_HAVEBIDRIGHT(QUOTEID INTEGER, V_RIGHT VARCHAR2(4000)) RETURNS INTEGER IS TYPE V_CURSOR IS REF CURSOR;
MYCURSOR V_CURSOR;
STATUS INTEGER := 0;
SMALLID INTEGER := 0;BEGIN
IF RIGHT = 'admin' THEN
RETURN 1;
ELSE
OPEN MYCURSOR FOR
SELECT CATALOGSMALLID
FROM TMATERIALINFO
WHERE MIID IN (SELECT MIID
FROM TBIDQUOTE A, TBIDMATERIAL B
WHERE A.QUOTEID = B.QUOTEID
AND A.QUOTEID = QUOTEID) LOOP FETCH MYCURSOR
INTO SMALLID;
EXIT WHEN MYCURSOR%NOTFOUND;
END LOOP;
STATUS := CHARINDEX(',' || SMALLID || ',', ',' || V_RIGHT || ',') --sqlserver里面这里的Charindex是什么意思?
IF STATUS > 0 THEN RETURN 1;
END IF;
END IF; CLOSE MYCURSOR RETURN 0
END F_HAVEBIDRIGHT;
sqlserver里面这里的Charindex是什么意思?
就是oracle中的inStr()函数,只是里面的参数换个位置就行了,
这是改后的可以的版本:CREATE OR REPLACE FUNCTION F_HAVEBIDRIGHT(pQUOTEID number, V_RIGHT VARCHAR2)
RETURN number
IS
TYPE V_CURSOR IS REF CURSOR;
MYCURSOR V_CURSOR;
STATUS number(10) := 0;
SMALLID number(10) := 0;
BEGIN
IF V_RIGHT = 'admin' THEN
RETURN 1;
ELSE
OPEN MYCURSOR FOR
SELECT CATALOGSMALLID FROM TMATERIALINFO
WHERE MIID IN (SELECT MIID
FROM TBIDQUOTE A, TBIDMATERIAL B
WHERE A.QUOTEID = B.QUOTEID
AND A.QUOTEID = pQUOTEID);
LOOP
FETCH MYCURSOR INTO SMALLID;
EXIT WHEN MYCURSOR%NOTFOUND;
END LOOP;
CLOSE MYCURSOR;
STATUS := instr(',' || V_RIGHT || ',',',' || SMALLID || ',');
IF STATUS > 0 THEN
RETURN 1;
END IF;
END IF;
RETURN 0;
END F_HAVEBIDRIGHT;