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;
写这种命令的时候||和'老是不知道怎么用.寒!!!!
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;
写这种命令的时候||和'老是不知道怎么用.寒!!!!
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;
/
的确可以运行.可是能否解释下前面三个'''和后面三个''''
所以前面的就相当于
SELECT NAME FROM INSTANCES WHERE LINK ='
||是连接符,连接 p_dblink的变量
最后的四个,中间两个就等于一个单引号,外面是引用字符
所以加起来就是
SELECT NAME FROM INSTANCES WHERE LINK ='p_dblink’
先改成dbms_output.put_line看看sql是什么,再执行