http://b61.photo.store.qq.com/http_imgload.cgi?/rurl4_b=829a85b63d18d9564f44348b1db1a0246f1900dce696ce39d544b2a04d057e6dc453a9044e2b23a70112ef0d2b6263983c318e67e68e0fb16dfcf7face21dba4460f81f8f5615d67fd0ebf49123f9c67efa37b74&a=57&b=61看我这样写有问题吧,第一和第三个值,
但跟踪怎么为null
但跟踪怎么为null
EXECUTE immediate ' SELECT COUNT(1) FROM SMS_SEND where smsid in (' || in_strSmsId || ')' Into t_flag ;
in_strSmsId为null
SELECT COUNT(1) Into t_flag FROM SMS_SEND where smsid =in_strSmsId;
还有。。你用in 这个(' || in_strSmsId || ')'也只有一个值。
PROCEDURE GetSmsSendedInfo
(
in_strSmsId in nvarchar2, --已发送成功的smsid
out_data OUT C_CURSOR, --return CURSOR
out_code OUT NUMBER --return code
)
IS
t_flag NUMBER(4);
t_smsid NUMBER; --你定义变量的语法错误 位置错
t_mobileno NUMBER;
t_smsfrom NUMBER;
t_content varchar2(600);
BEGIN
out_code := SUCC_CODE;
EXECUTE immediate ' SELECT COUNT(1) FROM SMS_SEND where smsid in (' || in_strSmsId || ')' Into t_flag ; IF t_flag > 0 THEN
OPEN out_data FOR 'SELECT smsid, mobileno, smsfrom, content
FROM SMS_SEND
WHERE smsid IN (1,2,3)';
LOOP
FETCH out_data
INTO t_smsid, t_mobileno, t_smsfrom, t_content;
EXIT WHEN out_data%NOTFOUND; --循环退出条件
IF out_data%FOUND THEN
INSERT INTO SMS_SENDED
VALUES
(t_smsid, t_smsid, 1, 1, SYSDATE, '', 0, t_mobileno, t_content, '000001');
END IF;
END LOOP;
COMMIT; --
ELSE
out_code := ERROR_DATABASE;
END IF;
EXCEPTION
WHEN OTHERS THEN
out_code := ERROR_DATABASE;
ROLLBACK;
RAISE;
END; 完整的存储过程