我正在这样的存储过程中创建一个临时表:
IF OBJECT_ID('#INSTL_PLAN_TEMP') IS NULL
BEGIN
CREATE TABLE #INSTL_PLAN_TEMP(P_LOAN_ID INT,
P_RECOVERY_TYPE VARCHAR(1),
P_SEQ_NO INT,
P_FROM_INSTL_NO INT)
DROP TABLE #INSTL_PLAN_TEMP
END
之后我在这个表上创建一个光标,如
DECLARE INSTL_PLAN_CUR CURSOR FOR
SELECT P_RECOVERY_TYPE, P_LOAN_ID, P_SEQ_NO, P_FROM_INSTL_NO
FROM INSTL_PLAN_TEMP
WHERE P_LOAN_ID = @I_LOAN_ID
ORDER BY P_LOAN_ID, P_SEQ_NO;
但在游标语句中显示错误
无效的对象名称INSTL_PLAN_TEMP
plz help我是SQL的新手
答案 0 :(得分:1)
我可以看到三点:
#INSTL_PLAN_TEMP
以及您正在删除它的下一个语句。#INSTL_PLAN_TEMP
而不是INSTL_PLAN_TEMP
@INSTL_PLAN_CUR CURSOR
注意:感谢Mohit指出。
-Milind
答案 1 :(得分:1)
我认为这不起作用:
IF OBJECT_ID('#INSTL_PLAN_TEMP') IS NULL
如果我没弄错的话,它会是这样的:
IF OBJECT_ID('tempdb..#INSTL_PLAN_TEMP') IS NULL
为什么在创作后放弃?
DROP TABLE #INSTL_PLAN_TEMP
这是正确的声明:
DECLARE @INSTL_PLAN_CUR CURSOR FOR
SELECT P_RECOVERY_TYPE, P_LOAN_ID, P_SEQ_NO, P_FROM_INSTL_NO
FROM #INSTL_PLAN_TEMP
WHERE P_LOAN_ID = @I_LOAN_ID
ORDER BY P_LOAN_ID,
P_SEQ_NO;