小虾想诸位请教一下“存储过程的调用的问题,有意者请书写详细一些,必给分(高分)存储过程如下:
CREATE PROCEDURE chp.P_Description_insert_1
(@info_id_1  [info_id],
 @medium_dscrpt_cn_2  [varchar](20),
 @medium_dscrpt_en_3  [varchar](20),
 @long_dscrpt_cn_4  [varchar](140),
 @long_dscrpt_en_5  [varchar](140),
 @add_info_cn_6  [varchar](350),
 @add_info_en_7  [varchar](350),
 @form_8  [varchar](35),
 @sub_strength_cn_9  [varchar](35),
 @sub_strength_en_10  [varchar](35),
 @substance_cn_11  [varchar](35),
 @substance_en_12  [varchar](35),
 @strength_13  [varchar](20),
 @color_cn_14  [varchar](30),
 @color_en_15  [varchar](30),
 @size_16  [varchar](17),
 @organic_id_17  [varchar](3),
 @irradiate_id_18  [varchar](3),
 @genetic_id_19  [varchar](3),
 @batch_id_20  [varchar](3))AS IF COALESCE(@medium_dscrpt_cn_2,
@medium_dscrpt_en_3,
@long_dscrpt_cn_4,
@long_dscrpt_en_5,
@add_info_cn_6,
@add_info_en_7,
@form_8,
@sub_strength_cn_9,
@sub_strength_en_10,
@substance_cn_11,
@substance_en_12,
@strength_13,
@color_cn_14,
@color_en_15,
@size_16,
@organic_id_17,
@irradiate_id_18,
@genetic_id_19,
@batch_id_20) IS NOT NULL
INSERT INTO [prd].[chp].[Description] 
 ( [info_id],
 [medium_dscrpt_cn],
 [medium_dscrpt_en],
 [long_dscrpt_cn],
 [long_dscrpt_en],
 [add_info_cn],
 [add_info_en],
 [form],
 [sub_strength_cn],
 [sub_strength_en],
 [substance_cn],
 [substance_en],
 [strength],
 [color_cn],
 [color_en],
 [size],
 [organic_id],
 [irradiate_id],
 [genetic_id],
 [batch_id]) 
 
VALUES 
( @info_id_1,
 @medium_dscrpt_cn_2,
 @medium_dscrpt_en_3,
 @long_dscrpt_cn_4,
 @long_dscrpt_en_5,
 @add_info_cn_6,
 @add_info_en_7,
 @form_8,
 @sub_strength_cn_9,
 @sub_strength_en_10,
 @substance_cn_11,
 @substance_en_12,
 @strength_13,
 @color_cn_14,
 @color_en_15,
 @size_16,
 @organic_id_17,
 @irradiate_id_18,
 @genetic_id_19,
 @batch_id_20)
 GO
我要用Query  控件呢还是用Storedproc 控件呢,再者该怎么来写Sql语句呢!
谢谢诸位大虾了!

解决方案 »

  1.   

    我一般习惯用adoquery控件;
    with adoquery1 do
    begin
      close;
      sql.clear;
      sql.text := 'exec chp.P_Description_insert_1 :1,:2,..';
      parameters.parambyname('').value := ?;
      ..
      execsql;
    end;
      

  2.   

    AdoStoredProc控件也可以!!:)
      

  3.   

    我觉得用AdoStoredProc连接到存储过程比较合适
      

  4.   

    呵呵;adostoredproc就adostoredproc吧;^_^;
    先在  adostoredproc.parameters中设置参数列表;然后在程序传递参数的时候用;adostoredproc.parameters.parambyname('参数1').value := edit1.text;
    adostoredproc.parameters.parambyname('参数2').value := edit1.text;
    adostoredproc.parameters.parambyname('参数3').value := edit1.text;
    adostoredproc.parameters.parambyname('参数4').value := edit1.text;
    adostoredproc.parameters.parambyname('参数5').value := edit1.text;
    ..快揭帖赛;^_^;
      

  5.   

    请问各位,如果我向存储过程里传递了一个字段名称的参数,应该如何使用?急急急急急!DECLARE @find varchar(30)
    SET @find = 'SH_RQ'
    SELECT *
    FROM ZB_YKJHML
    WHERE  @find <'2003-12-1'WHERE  @find <'2003-12-1'@find好象只能放到表达式的右边,能不能放到左边啊?我很菜
    我想根据传递来的字段名称选择条件字段,不知道应该怎么做!!谢谢各位帮忙!