我正在通过SSMS在SQL Server中创建存储过程.
我已经编写了下面的存储过程,但是当我单击执行它时会出现错误:
Msg 208,Level 16,State 6,Procedure NewQuestion,Line 11无效的对象名称'hgomez.NewQuestion'.
表是所有权是正确的.(hgomez.Questions)
USE [devworks_oscar]
GO
/****** Object: StoredProcedure [hgomez].[NewQuestion] Script Date: 10/23/2011 23:55:08 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [hgomez].[NewQuestion]
(
@QUESTIONNAME nvarchar(50),
@QUESTION_ID int OUTPUT
)
AS
/* SET NOCOUNT ON */
INSERT INTO [Questions] (QuestionText) VALUES (@QUESTIONNAME)
SET @QUESTION_ID = SCOPE_IDENTITY();
RETURN
Run Code Online (Sandbox Code Playgroud)
提前致谢
我有两张桌子.不同之处在于存档是一个表而另一个存放当前记录.这些是记录公司销售额的表格.在这两个领域我们都有:id,名称,销售价格.我需要从两个表中选择给定名称的最高价和最低价.我试着用这个查询:
select name, max (price_of_sale), min (price_of_sale)
from wapzby
union
select name, max (price_of_sale), min (price_of_sale)
from wpzby
order by name
Run Code Online (Sandbox Code Playgroud)
但是这样的调查给了我两条记录 - 一张当前的表,一张表档案.我想立即从两个表中选择最小和最大价格的名称.我如何获得此查询?
如何在SQL Server中搜索表的所有列?
我有一个大表,里面有一些NULL.从0表而不是NULL中选择表的最简单方法是什么.
或者,如果没有简单的方法,我愿意用表中的0替换所有空值.
有很多列,我不想通过ISNULL(FieldName,0)AS FieldName之类的东西来遍历每一列.
使用ORACLE 10g时遇到了这个问题.我在这里阅读了这个问题的答案(ora-00972标识符太长了oracle 10g)堆栈溢出但它们没有为我工作.也许我的情况有所不同.
现在我有这些表名:WIMAX_TRAFFIC_STATS 和WIMAX_RADIO_STATS.当我尝试通过ODBC连接将数据插入到它们时Erlang/OTP,我得到了错误:
{error,"[DataDirect][ODBC Oracle Wire Protocol driver][Oracle]ORA-00972:
identifier is toolong SQLSTATE IS: HY000"}
所以,我搜索谷歌并找到答案说,也许我的表名太长了.所以我在下面做了这个并再次尝试:SQL> ALTER TABLE WIMAX_RADIO_STATS RENAME TO WR; Table altered. SQL> ALTER TABLE WIMAX_TRAFFIC_STATS RENAME TO WT; Table altered.我仍然得到同样的错误.其他来源sya,它可能是我在我的一些专栏中写的数据.我的表定义如下:
SQL> DESCRIBE WT; Name Null? Type ----------------------------------------- -------- ----------------- SDATE DATE ELEMENT_TYPE VARCHAR2(50) MANAGED_ELEMENT VARCHAR2(50) USER_LABEL VARCHAR2(200) JOB_ID VARCHAR2(50) MEAS_TYPE VARCHAR2(50) MEAS_VALUE VARCHAR2(50)
我在那里写的数据值都不比列长度定义长.我真的好奇.我试图在表中编写长度小于10个字符但仍然出现此错误的字符串.请帮助一些身体!
EDIT
SAMPLE查询请求如下:
INSERT INTO WT(element_type,managed_element,user_label,job_id,meas_type,
meas_value) VALUES("BreezeMAX MBS",
"SubNetwork=ASN,MeContext=,ManagedElement=MBS.172.17.9.9",
"BMAX-Shoal2[MTN-Egate]",
"99297","rbMngmntPortPacketsDiscardedOnRx","0"); …
如果BEGIN我在SET TRANSACTION ISOLATION LEVEL ...声明之后,对于整个存储过程的范围,给定的事务级别是否有效,无论我是否使用BEGIN TRANSACTION?也就是说,如果我有简单的SELECT语句,按定义原子/事务处理,它们的默认事务级别是否会设置为给定的语句?
BEGIN
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
-- will a transaction level for a atomic transaction created by SQL Server for this statement be READ COMMITTED
SELECT * FROM T
END
Run Code Online (Sandbox Code Playgroud) 我在数据库表中有两列(以及其他列):ExitDate和ExitReason.我们的业务逻辑要求在指定ExitDate时指定ExitReason.ExitDate列需要允许空值,因为在插入时并不总是知道该值.有没有办法让ExitReason列仅在ExitDate值为null时才允许空值?我可以通过将这两列分成单独的"退出日期"表并使它们都不可为空来完成效果,但如果我不必这样做会很好.
想法?谢谢!
我正在构建一个Codeigniter应用程序,我正在努力防止SQL注入.我正在使用Active Record方法构建我的所有查询.我知道Active Record会自动清理输入,但我想知道到底在多大程度上?它只是逃避所有引用,还是做得更多?如何防止混淆的SQL注入或其他更高级的类型?
基本上,我正在寻找CI如何清理数据的深入解释.谁知道?
在过去的几天里,我发现了一些奇怪的优化我的查询.我有一个简单的查询,它具有以下特点:
SELECT id,name,amount FROM reservations WHERE NOT canceled ORDER BY name ASC
Run Code Online (Sandbox Code Playgroud)
我注意到mysql没有使用任何索引,所以我开始做一些实验.无意中我将"NOT cancel"替换为"cancelled = false",然后,Mysql开始使用"cancelled"作为索引.之后我尝试使用相反的方法:
SELECT ... FROM reservations WHERE canceled ORDER BY ...
Run Code Online (Sandbox Code Playgroud)
结果相同!当我将其更改为"cancelled = true"时,索引再次起作用.
我的问题是:怎么样?!是不是使用"NOT"的"优雅"方式?无论如何,我没想到它会有任何不同.
我使用InnoDB作为引擎,但我使用MyISAM获得相同的结果.有人能澄清一切吗?谢谢.
编辑:表结构
CREATE TABLE `reservations` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`trip_code` varchar(10) DEFAULT NULL,
`departure_date` date DEFAULT NULL,
`amount` float DEFAULT NULL,
`name` varchar(45) DEFAULT NULL,
`canceled` tinyint(1) NOT NULL DEFAULT '0',
`created_date` date NOT NULL,
`creator_user` int(11) NOT NULL DEFAULT '1',
`last_update_user` int(11) NOT NULL DEFAULT '1', …Run Code Online (Sandbox Code Playgroud) 我处于混乱状态,在同一个SQL Server实例中使用跨数据库查询的优点和缺点是什么?
我能想到的一件事是性能问题(查询会很慢)如果是这种情况的解决方案是什么?
请注意解决方案的一些优点和缺点,以便我可以自信地处理这两个数据库.
我有两个数据库db1 Companies/CRM和db2 Products/E-commerce