john816 发表于 2007-4-23 23:34

看看pb中sql为什么没有执行?

我在pb中需要执行sql语句,但程序就是不执行,请各位帮忙看看什么原因?<BR>String ls_sql<BR>dec {2} v1<BR><BR>ls_sql="select count(*) into :v1 from ren"<BR>               execute immediate :ls_sql;<BR>                    If   sqlca.sqlcode   &lt;&gt;   0   Then   <BR>                     rollback;   <BR>                     MessageBox("错误",   sqlca.sqlcode);   <BR>                    else     <BR>                     commit;  <BR>                     MessageBox("成功",   sqlca.sqlcode);   <BR>                    End  If  <BR>如果把into :v1去掉,则执行成功,否则错误,问题在于sqlca.sqlcode都是0

路過 发表于 2007-4-26 08:42

要用這個動態語句。<BR>DECLARE   my_cursor   DYNAMIC   CURSOR   FOR   SQLSA   ;   <BR>    <BR>  PREPARE   SQLSA   FROM   :mysql   ;   <BR>    <BR>  OPEN   DYNAMIC   my_cursor   ;   <BR>    <BR>  FETCH   my_cursor   INTO   :   num;   <BR>    <BR>  CLOSE   my_cursor   ;   <BR>    <BR>   

黎明前的黑暗 发表于 2007-6-7 15:57

:V1在""内被作为字符串看待.绝对不符合SQL语法,所以一定是错的,<br>对于PB来说,你这个简单的SELECT语句完全可以直接执行,不必那么麻烦.<br>

fyh 发表于 2007-6-9 21:46

        select count(*) into :v1 from ren;     //sql语句可在PB脚本中执行啊<BR> <BR>          If   sqlca.sqlcode   &lt;&gt;   0   Then   <BR>                rollback;   <BR>                MessageBox("错误",   sqlca.sqlcode)  <BR>          else     <BR>                commit;  <BR>                MessageBox("成功",   sqlca.sqlcode) <BR>          End  If  <BR>     

langzping 发表于 2007-6-13 21:34

晕 啊,为什么还要 rollabck 和 commit   直接写不就可以了吗<BR><BR>Long ll_count<BR>SELECT count(*) INTO :ll_count FROM ren;<BR>If ll_count &gt; 0 Then<BR>MessageBox('','找到资料',exclamation)<BR>Else<BR>没有<BR>End If

页: [1]

编程论坛