有熟SQL sever7的吗?帮哦看一下

withhold 2000-08-31 05:54:00
CREATE PROCEDURE sp_hgp_select
@strpara varchar(50)
AS
set @strpara="select * from HGP where id<>null and " + @strpara
exec @strpara

exec sp_hgp_select "kfdh='1213123'" 在执行时报错:
Server: Msg 2812, Level 16, State 62, Line 5
Could not find stored procedure 'select * from HGP where id<>null and kfdh='1213123'.

主要是想通过存储过程实现灵活的条件查询
...全文
213 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
guoyiqian 2000-09-07
  • 打赏
  • 举报
回复
朋友:你好
你这段程序确实有错.
1. id<>null不对,应该为 id is not null
2. 执行时参数代入格式不对,参数是条件 + 字符型值时,不能写成 "kfdh='1213123'",但可以写成"kfdh=1213123",系统会自动将1213123认为为字符型.
3. 执行动态SQL语句时格式不对, 应加括号,即 exec (@strpara)
4. 注意点(不是错误), 用户自定义存储过程的名称不要使用 sp_开头,sp_开头的存储过程为系统存储过程.

以上程序修改如下:
CREATE PROCEDURE hgp_select
@strpara varchar(50)
AS
set @strpara="select * from HGP where id is not null and " + @strpara
exec (@strpara)

exec hgp_select "kfdh=1213123"
guoyiqian 2000-09-07
  • 打赏
  • 举报
回复
withhold:你好!
如果@strpara包含多个条件且条件个数不知的情况下,可以有二种方法解决该问题.
方法一:通过DB-Library编程,动态生成存储过程.我以前在SYBASE数据库下使用过,但该方法要有C编程经验,同时要熟悉DB-Library,比较难使用.我建议你使用方法二.

方法二:我猜想你应该是前台使用种数据库开发工具(PB,VB或其它),后台使用SQL SERVER数据库.
而多条件是由前台决定的. 若是这种类型,则:
第一步,你可以在后台建立一个专门存放条件的表.表结构为
CREATE TABLE dbo.cond
(condition varchar(2000) NOT NULL,
iden_id int IDENTITY NOT NULL --系统流水号,读写数据时不要理会该字段
, CONSTRAINT cond_p
PRIMARY KEY NONCLUSTERED
(iden_id)) ;
前台决定好的条件先在前台动态拼接好,如 where col1='abc' and col2='efg' and id=50,将拼接好的条件存放到条件表中 .
第二步,建立存储过程
CREATE PROCEDURE hgp_select
AS
declare @strsql varchar(2000), @condition varchar(2000)
select @condition = condition from cond
set @strsql="select * from HGP " + @condition
exec (@strsql)

调用该存储过程: exec hgp_select

细节注意点:1. 应考虑系统是多用户的,该程序必须允许多个人同时选择不同条件,同时得到各自的所需数据,所以在条件表最好再加上一个操作员(注:不同人执行该程序,应该为不同的操作人员),这样可以区分条件是谁的.在存储过程中,同样要有操作人员.
2. 在存储过程中拼接条件时,即做select @condition = condition from cond
set @strsql="select * from HGP " + @condition动作时,应该判断条件表中是否取到了条件.因为 变量 + Null = Null

很高兴我们能相互探讨问题.有空联系


withhold 2000-09-07
  • 打赏
  • 举报
回复
guoyiqian,谢谢指点.
但问题该没彻底解决,
如果@strpara包含多个条件,
如:"col1=11212 and col2=112",
则无法正确执行,还请帮忙看看,多谢!
Iwant 2000-09-04
  • 打赏
  • 举报
回复
我还不知道在后台可以这样写 proc
whitehare 2000-09-03
  • 打赏
  • 举报
回复
Bad Command or file name
Wonny 2000-09-01
  • 打赏
  • 举报
回复
太对了。
hoyle 2000-09-01
  • 打赏
  • 举报
回复
完全正确
mnbvcxz 2000-08-31
  • 打赏
  • 举报
回复
exec (@strpara)
项目是基于ASP.NET的Web应用程序开发,旨在构建一个高性能、可扩展和可靠的在线平台。我们将使用ASP.NET MVC框架和C#编程语言来实现这个项目。 ASP.NET MVC是一种成熟的开发框架,它采用模型-视图-控制器的设计模式,将应用程序的逻辑和界面分离,提供了更好的代码组织和可维护性。我们选择ASP.NET MVC框架是因为它具有良好的可扩展性和灵活性,可以轻松地添加新功能和模块。 在技术方案上,我们将采用以下几个关键技术: 数据库集成:我们将使用Entity Framework作为ORM(对象关系映射)工具,与数据库进行集成。Entity Framework提供了一种简单且强大的方式来访问和操作数据库,可以大大简化数据访问层的开发工作。 安全性保护:我们将使用ASP.NET提供的身份验证和授权功能,确保只有经过授权的用户可以访问敏感数据和功能。我们还将使用加密技术来保护用户的敏感信息,如密码和支付信息。 缓存管理:为了提高应用程序的性能,我们将使用ASP.NET提供的缓存机制来缓存常用的数据和页面。这将减少对数据库和服务器的访问次数,提高应用程序的响应速度和吞吐量。 异步编程:我们将使用ASP.NET提供的异步编程模型来处理并发请求和长时间运行的任务。这将提高应用程序的并发能力和响应性能,确保用户在高负载情况下仍然能够流畅地使用应用程序。 性能优化:我们将使用一系列性能优化技术来提高应用程序的性能。这包括使用高效的算法和数据结构、使用缓存技术和数据库索引、进行代码优化和资源管理等。 通过采用这些技术方案,我们的项目将能够提供一个高性能、可扩展和可靠的Web应用程序。我们将遵循最佳的软件开发实践,进行系统测试和性能测试,以确保应用程序的质量和稳定性。

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧