请问一下如果我要点击按钮后向数据库执行增加个函数:
CREATE            FUNCTION R_P_RECEIPTRDETAILQ01(@FROMDATE DATETIME, @TODATE DATETIME)
  RETURNS @TempTable TABLE (
      BILLID INT, ITEMNO INT, BT VARCHAR(40), BD DATETIME, BC VARCHAR(20), BA FLOAT,
      WD DATETIME, WU VARCHAR(20), AD DATETIME, AU VARCHAR(20), ST VARCHAR(40),
      D VARCHAR(20), R VARCHAR(40), IT VARCHAR(64), S VARCHAR(64), T VARCHAR(64),
      RK VARCHAR(255), GC VARCHAR(40), GBC VARCHAR(40), MEMC VARCHAR(40), CGN VARCHAR(40),
      SPEC VARCHAR(80), GT VARCHAR(40), GTC VARCHAR(20), UN VARCHAR(40), AUN VARCHAR(40),
      GK VARCHAR(20), EN VARCHAR(40), EC VARCHAR(20), ET VARCHAR(20), ER VARCHAR(255),
      AP FLOAT, PR FLOAT, TP FLOAT, QT FLOAT, EINQT FLOAT, EBALQT FLOAT, ERTNQT FLOAT,
      APR FLOAT, ATP FLOAT, AQT FLOAT, TR FLOAT,ATR FLOAT, DI FLOAT, AM FLOAT, TA FLOAT, OA FLOAT,
      DM FLOAT, DT FLOAT,
      FCR VARCHAR(40), EXR FLOAT, FPR FLOAT, FUPR FLOAT, FTP FLOAT,
      FAM FLOAT, FTA FLOAT, FOA FLOAT,
      VENDORID INT, VC VARCHAR(40), VN VARCHAR(40), VF VARCHAR(80), A VARCHAR(40),
      AC VARCHAR(20), VT VARCHAR(40), VTC VARCHAR(20), PO VARCHAR(20), PRN SMALLINT,
      FPRO VARCHAR(10), STOPED INT, BTC VARCHAR(40), GPD DATETIME, GMD DATETIME, BS INT,
      NBID INT, NB VARCHAR(60),TN VARCHAR(32),
      MD1 VARCHAR(255), MD2 VARCHAR(255), MD3 VARCHAR(255), MD4 VARCHAR(255), MD5 VARCHAR(255),
      MD6 VARCHAR(200), MD7 VARCHAR(200), MD8 VARCHAR(200), MD9 VARCHAR(100), MD10 VARCHAR(100),
      DD1 VARCHAR(255), DD2 VARCHAR(255), DD3 VARCHAR(255), DD4 VARCHAR(255), DD5 VARCHAR(255),
      DD6 VARCHAR(200), DD7 VARCHAR(200), DD8 VARCHAR(200), DD9 VARCHAR(255), DD10 VARCHAR(100),
      SAE VARCHAR(64), PN FLOAT,UPN FLOAT---,CGC VARCHAR(255),CGN  VARCHAR(255),CGSPEC  VARCHAR(255)
      ,STQT VARCHAR(255),
    MD11 VARCHAR(255), MD12 VARCHAR(255), MD13 VARCHAR(255), MD14 VARCHAR(255), MD15 VARCHAR(255),
    MD16 VARCHAR(100), MD17 VARCHAR(100), MD18 VARCHAR(100), MD19 VARCHAR(255), MD20 VARCHAR(255),
    DD11 VARCHAR(255), DD12 VARCHAR(255), DD13 VARCHAR(255), DD14 VARCHAR(255), DD15 VARCHAR(255),
    DD16 VARCHAR(100), DD17 VARCHAR(100), DD18 VARCHAR(100), DD19 VARCHAR(255), DD20 VARCHAR(255),
    GRK1 VARCHAR(255), GRK2 VARCHAR(255), GRK3 VARCHAR(255), GRK4 VARCHAR(255), GRK5 VARCHAR(255),
    GRK6 VARCHAR(255), GRK7 VARCHAR(255), GRK8 VARCHAR(255), GRK9 VARCHAR(255), GRK10 VARCHAR(255)
)
AS
BEGIN
  INSERT INTO @TempTable
    SELECT M.BILLID, D.ITEMNO, '102', M.BILLDATE, M.BILLCODE,
          M.BILLAMT, M.WDATE, EMPLOYW.OPNAME, M.ADATE, EMPLOYA.OPNAME,
          STORE.NAME, DEPARTMENT.NAME, REP.NAME, INVOICETYPE.NAME, SHIPVIA.NAME, TERM.NAME,
          M.REMARK, GOODS.CODE, GOODSUNIT.BARCODE, GOODS.MEMORYCODE, GOODS.NAME, GOODS.SPEC,
          GDTYPE.NAME, GDTYPE.LCODE, B_UNIT.NAME, A_UNIT.NAME, GOODSKIND.NAME, GOODS.SHORTNAME,
          GOODS.ENGPARTCODE, GOODS.ENGTARIFFCODE, GOODS.ENGREMARK, GOODS.APRICE,
          D.PRICE, D.PRICE * (1 + D.TAXRATE)*(1+D.AddTaxRate),
          D.QTY, D.EXEINQTY, D.EXEBALQTY, D.EXERTNQTY,
          D.UNITPRICE, D.UNITPRICE * (1 + D.TAXRATE)*(1+D.AddTaxRate),
          D.UNITQTY, (D.TAXRATE) * 100, (D.ADDTAXRATE) * 100,D.DISC * 100,
          --DBO.ROUND2 (D.PRICE * D.QTY),
          D.GoodsAmt, 
          --DBO.ROUND2 (D.PRICE * (1 + D.TAXRATE)*(1+D.AddTaxRate) * D.QTY)-DBO.ROUND2 (D.PRICE * D.QTY),
          D.TaxAmt,
          --DBO.ROUND2 (D.PRICE * (1 + D.TAXRATE)*(1+D.AddTaxRate) * D.QTY),
          D.GTAmt,
          DBO.ROUND2 (D.PRICE * D.QTY * D.DISC),
          DBO.ROUND2 (D.PRICE * (1 + D.TAXRATE) *(1+D.AddTaxRate)* D.QTY * D.DISC),
          FC.NAME, M.MONEYRATE, D.FCPRICE, D.UNITFCPRICE,
          D.FCPRICE * (1 + D.TAXRATE)*(1+D.AddTaxRate),
          --DBO.ROUND2 (D.QTY * D.FCPRICE),
          D.FCGoodsAmt, 
          --DBO.ROUND2 (D.QTY * D.FCPRICE * (1 + D.TAXRATE)*(1+D.AddTaxRate))-DBO.ROUND2 (D.QTY * D.FCPRICE),
          D.FCTaxAmt,
          --DBO.ROUND2 (D.QTY * D.FCPRICE * (1 + D.TAXRATE)*(1+D.AddTaxRate)),
          D.FCGTAmt,
          M.VENDORID, V.VENDORNO, V.SHORTNAME, V.NAME, AREA.NAME, AREA.LCODE, VDTYPE.NAME,
          VDTYPE.LCODE,
-- P_ORDER.BILLCODE, 
          (case when M.billstate=-1 then PP.billcode else P_ORDER.BILLCODE end),
          M.PRINTED, '未开票' ,  M.ISSTOP, D.BATCHCODE,
          D.PRODUCTDATE, D.MATUREDATE, M.BILLSTATE,
          M.DEPSUBID, NB.NAME,D.CNTCTNO,
          M.USERDEF1, M.USERDEF2, M.USERDEF3, M.USERDEF4, M.USERDEF5,
          M.USERDEF6, M.USERDEF7, M.USERDEF8, M.USERDEF9, M.USERDEF10,
          D.USERDEF1, D.USERDEF2, D.USERDEF3, D.USERDEF4, D.USERDEF5,
          D.USERDEF6, D.USERDEF7, D.USERDEF8, D.USERDEF9, D.USERDEF10,
          D.ShipTo,D.PassNum,D.UnPassNum---,GT.TraderGoodsCode,GT.TraderGoodsName,GT.TraderGoodsSpec
          ,dbo.fn_unitDisplay(D.GOODSID,D.QTY),
          M.USERDEF11, M.USERDEF12, M.USERDEF13, M.USERDEF14, M.USERDEF15,
          M.USERDEF16, M.USERDEF17, M.USERDEF18, M.USERDEF19, M.USERDEF20,
          D.USERDEF11, D.USERDEF12, D.USERDEF13, D.USERDEF14, D.USERDEF15,
          D.USERDEF16, D.USERDEF17, D.USERDEF18, D.USERDEF19, D.USERDEF20,
          GOODS.REMARK1, GOODS.REMARK2, GOODS.REMARK3, GOODS.REMARK4, GOODS.REMARK5,
          GOODS.REMARK6, GOODS.REMARK7, GOODS.REMARK8, GOODS.REMARK9, GOODS.REMARK10
      FROM P_RECEIPT M
          LEFT JOIN P_RECEIPTD D ON (D.BILLID = M.BILLID)
          LEFT OUTER JOIN P_ORDERD ON (D.OBILLID = P_ORDERD.BILLID AND
              D.OITEMNO = P_ORDERD.ITEMNO)
          LEFT OUTER JOIN P_ORDER ON (P_ORDER.BILLID = P_ORDERD.BILLID)
          LEFT JOIN DEPARTMENT ON (DEPARTMENT.ID = M.DEPID)
          LEFT JOIN INVOICETYPE ON (INVOICETYPE.INVOICETYPEID = M.INVOICETYPEID)
          LEFT JOIN VENDOR V ON (V.VENDORID = M.VENDORID)
          LEFT JOIN VDTYPE ON VDTYPE.VDTYPEID = V.VDTYPEID
          LEFT JOIN AREA ON AREA.AREAID = V.AREAID
          LEFT JOIN STORE ON STORE.STOREID = D.STOREID
          LEFT JOIN GOODS ON GOODS.GOODSID = D.GOODSID
          LEFT JOIN GDTYPE ON GDTYPE.GDTYPEID = GOODS.GDTYPEID
          LEFT JOIN GOODSKIND ON GOODSKIND.GOODSKINDID = GOODS.KIND
          LEFT JOIN REP ON (REP.REPID = M.REPID)
          LEFT JOIN OPERATOR EMPLOYW ON (M.WUSERNO = EMPLOYW.OPID)
          LEFT JOIN OPERATOR EMPLOYA ON (M.AUSERNO = EMPLOYA.OPID)
          LEFT JOIN SHIPVIA ON (M.SHIPVIAID = SHIPVIA.SHIPVIAID)
          LEFT JOIN TERM ON (M.TERMID = TERM.TERMID)
          LEFT JOIN GOODSUNIT ON (GOODSUNIT.GOODSID = D.GOODSID AND GOODSUNIT.ISBASEUNIT = 1)
          LEFT JOIN GUNIT B_UNIT ON GOODSUNIT.UNITID = B_UNIT.ID
          LEFT JOIN GUNIT A_UNIT ON D.UNITID = A_UNIT.ID
          LEFT JOIN D_SHOP NB ON NB.SHOPID = M.DEPSUBID
          LEFT JOIN AL_MONEY FC ON FC.MONEYID = M.MONEYID
          LEFT JOIN L_GoodsTraders GT ON (GT.GOODSID = D.GoodsID) and GT.TraderID=M.VENDORID
          left join  P_Receipt  PP on PP.Billid=D.RBillid 
     WHERE M.BILLID > 0 AND M.BILLDATE >= @FROMDATE AND
          M.BILLDATE <= @TODATE AND M.CANCELED = 0 AND --M.BILLSTATE<=0 AND
          M.AUSERNO IS NOT NULL  AND D.QTY<0
  UPDATE @TempTable SET FPRO =  '已开票' WHERE ABS(QT - EBALQT) < 0.00001
  UPDATE @TempTable SET BT =  '105' WHERE QT<0 AND BS<0
  RETURN
END这样应该如何写?

解决方案 »

  1.   

    增加函数也是sql语句,把这个赋给一个string,和执行sql一样用cmd.ExecuteNonQuery()就行.
      

  2.   

    private void button1_Click(object sender, EventArgs e)
            { 
                string sql=//把这个传到sql里就行了!
                string connStr = string.Format("data source=.;database=master;uid=sa;pwd=;);
                SqlConnection conn = new SqlConnection(connStr);
                SqlCommand cmd = new SqlCommand(sql, conn);
                conn.Open();
                cmd.ExecuteNonQuery();
                conn.Close();
            }
      

  3.   

    顶楼上的,就当普通SQL语句处理就可以了,就好象那些 udpate 语句一样