大家看看那里写错了

zdljj 2008-09-17 10:16:22
DECLARE
p_dblink VARCHAR2(128):= 'AA';
V_sql VARCHAR2(10000);
V_servername VARCHAR2(128);
BEGIN
V_sql := 'SELECT NAME FROM INSTANCES WHERE LINK ='||p_dblink;
execute immediate V_sql INTO V_servername;
DBMS_OUTPUT.PUT_LINE(V_servername);
END;


写这种命令的时候||和'老是不知道怎么用.寒!!!!
...全文
78 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
范佩西_11 2008-09-17
  • 打赏
  • 举报
回复
因为2个'就相当于一个'
所以前面的就相当于
SELECT NAME FROM INSTANCES WHERE LINK ='
||是连接符,连接 p_dblink的变量
最后的四个,中间两个就等于一个单引号,外面是引用字符
所以加起来就是
SELECT NAME FROM INSTANCES WHERE LINK ='p_dblink’
zdljj 2008-09-17
  • 打赏
  • 举报
回复
V_SQL := 'SELECT NAME FROM INSTANCES WHERE LINK =''' || P_DBLINK || '''';
的确可以运行.可是能否解释下前面三个'''和后面三个''''
suiziguo 2008-09-17
  • 打赏
  • 举报
回复
V_sql := 'SELECT NAME FROM INSTANCES WHERE LINK ='||''''||p_dblink||'''';
oracledbalgtu 2008-09-17
  • 打赏
  • 举报
回复
DECLARE
P_DBLINK VARCHAR2(128) := 'AA';
V_SQL VARCHAR2(10000);
V_SERVERNAME VARCHAR2(128);
BEGIN
V_SQL := 'SELECT NAME FROM INSTANCES WHERE LINK =''' || P_DBLINK || '''';
EXECUTE IMMEDIATE V_SQL
INTO V_SERVERNAME;
DBMS_OUTPUT.PUT_LINE(V_SERVERNAME);
END;
/
[Quote=引用楼主 zdljj 的帖子:]
DECLARE
p_dblink VARCHAR2(128):= 'AA';
V_sql VARCHAR2(10000);
V_servername VARCHAR2(128);
BEGIN
V_sql := 'SELECT NAME FROM INSTANCES WHERE LINK ='||p_dblink;
execute immediate V_sql INTO V_servername;
DBMS_OUTPUT.PUT_LINE(V_servername);
END;


写这种命令的时候||和'老是不知道怎么用.寒!!!!
[/Quote]
fosjos 2008-09-17
  • 打赏
  • 举报
回复
建议楼主在执行execute immediate时候
先改成dbms_output.put_line看看sql是什么,再执行

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧