| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1239 人关注过本帖
标题:求助!!存储过程出错!
只看楼主 加入收藏
LoveGood
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2007-6-2
收藏
 问题点数:0 回复次数:5 
求助!!存储过程出错!
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go





ALTER PROCEDURE [dbo].[AddProduct]
    @ProductName varchar(20),
    @Category char(20),
    @ProductRate money,
    @Brand char(20),
    @ProductQoh smallint,
    @ProductImgPath varchar(50),
    @ProductDescription varchar(250),

         @CategoryId int,    -- 为局部变量(不会声明)
    @BrandId int        -- 为局部变量
    
AS
         
    select @CategoryId=(select cCategoryId from Category where cCategoryName=@Category)
    select @BrandId=(select cBrandId from BrandId where cBrandName=@Brand)

BEGIN
    SET NOCOUNT ON;
    Insert into Product(vProductName,cCategoryId,mProductRate,cBrandId,siProductQoh,vProductImgPath,vProductDescription)
    values(@ProductName,@CategoryId ,@ProductRate,@BrandId,@ProductQoh,@ProductImgPath,@ProductDescription)
END



语言是c#,是这样传递的
string sql = string.Format("AddProduct'{0}','{1}','{2}','{3}','{4}','{5}','{6}'", pName, pPcategory, pRate, pBrand, pAmount, pImgPath, pDescription);

bc.ExecSQL(sql);


我自定了一个类bc ExecSQL方法是
public Boolean ExecSQL(string sQueryString)
    {
        SqlConnection conn = new SqlConnection("Server=localhost;database=MyShop;user id=sa;password=123456");

        conn.Open();
        SqlCommand comm = new SqlCommand(sQueryString, conn);

        try
        {
            comm.ExecuteNonQuery();
            conn.Close();

        }
        catch (System.Exception em)
        {

            conn.Close();
            TetMessage = "连接数据库失败" + em.ToString();
            return false;

        }
        return true;
    }




在线等!!
搜索更多相关主题的帖子: 声明 money where 
2008-11-19 10:33
happynight
Rank: 8Rank: 8
等 级:贵宾
威 望:15
帖 子:807
专家分:760
注 册:2008-4-26
收藏
得分:0 
把详细的错误提示贴上来
2008-11-19 10:36
LoveGood
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2007-6-2
收藏
得分:0 
没有提示出错信息,只是还能写入数据库!
存储过程编译没错,只是不会声明存储过程的局部变量!

路越是难走,就越是有味道~
2008-11-19 11:27
wwttxx
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-9-13
收藏
得分:0 
select @CategoryId=(select cCategoryId from Category where cCategoryName=@Category)
    select @BrandId=(select cBrandId from BrandId where cBrandName=@Brand)


SQL好像不能这么传递值,可以动态生成一个SQL语句来执行这个查询
2008-11-19 11:47
球球
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:1146
专家分:265
注 册:2005-11-28
收藏
得分:0 
ALTER PROCEDURE [dbo].[AddProduct]
    @ProductName varchar(20),
    @Category char(20),
    @ProductRate money,
    @Brand char(20),
    @ProductQoh smallint,
    @ProductImgPath varchar(50),
    @ProductDescription varchar(250)
AS
BEGIN
    SET NOCOUNT ON;
    --声明变量
    DECLARE @CategoryId int,    -- 为局部变量(不会声明)
            @BrandId int        -- 为局部变量

    --给变量赋值
    SELECT @CategoryId = cCategoryId FROM Category
        WHERE cCategoryName = @Category
    SELECT @BrandId = cBrandId FROM BrandId
        WHERE cBrandName = @Brand

    INSERT INTO Product
    (
        vProductName,
        cCategoryId,
        mProductRate,
        cBrandId,
        siProductQoh,
        vProductImgPath,
        vProductDescription
    )
    VALUES
    (
        @ProductName,
        @CategoryId ,
        @ProductRate,
        @BrandId,
        @ProductQoh,
        @ProductImgPath,
        @ProductDescription
    )
END

[[it] 本帖最后由 球球 于 2008-11-19 12:27 编辑 [/it]]

好累
2008-11-19 12:23
LoveGood
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2007-6-2
收藏
得分:0 
thank you!!!

路越是难走,就越是有味道~
2008-11-24 15:14
快速回复:求助!!存储过程出错!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029749 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved