我想验证员工是否存在于该客户端;如果他确实存在,那么我想显示一条消息“成功”,否则我想显示“无效员工”。
declare @Employeeid int
if @Employeeid = 1616
select
@Employeeid = employeeindex
from
Employee_table
where
clientid in (select Clientid
from Employee_table
我正在寻找一种自动执行一些常用查询的方法,这些查询是我在SQL Server 2014中使用的键盘快捷键。
我发现在Menu -> Tools -> Options -> Keyboard中设置键盘快捷键是可行的(已经保存了3个存储过程,sp_who,sp_lock,sp_help),所以我的主要问题就解决了。
例如,我可以设置CTRL +3来执行
SELECT ID FROM MY_TABLE
但我忽略的是,通过这种方式,查询窗口中不会显示已执行的查询文本(SELECT ID FROM MY_TABLE)。
这可能是微不足道的,但有时我需要使用该查询作为编写其他查询的起点,
我一直在使用以下模式验证用于执行插入的存储过程的外键(FK)参数:
CREATE PROC spCreateChildFoo
@ForeignKey_Id int,
@Attribute varchar(50)
AS
IF NOT EXISTS (SELECT ForeignKey_Id FROM ForeignTable WHERE ForeignKey_Id = @ForeignKey_Id)
BEGIN
RAISERROR ('The input ForeignKey_Id does not exist', 16, 1)
我创建了一个函数作为Test1()。我想将该函数重命名为Test11()。
Create function dbo.Test1()
returns Datetime
AS
BEGIN
return (SELECT GETDATE())
END
GO
SELECT dbo.Test1()
如果可能,使用query重命名函数名称。
我在sybase使用时遇到了一个非常奇怪的问题。为何此代码执行:
BEGIN
WHILE 'toto' = 'titi'
BEGIN
DECLARE @val int
SELECT * FROM randomtable1
SELECT * FROM randomtable2
END
END
而不是这个?
BEGIN
DECLARE @val INT;
WHILE 'toto' = 'titi'
BEGIN
DECLARE @val int
SELECT * FROM random
我有一个Azure SQL服务器,在包含它的资源组中有贡献者角色。我已经将自己的用户设置为Azure管理员。我想这就是让我在通过Management连接时自动添加自己的IP作为防火墙异常的能力,并且我的IP被更改了。还有其他用户将与同一台服务器一起工作,他们拥有通过Management自动设置防火墙异常的相同功能,但我无法让它工作。
以下是我所做的步骤:
要求订阅管理员在服务器资源组下向用户添加贡献者角色,我已经以如下方式将用户添加到主db:
CREATE USER [dude@dude.org]
FROM EXTERNAL PROVIDER;
ALTER ROLE dbmanag
我正在尝试使用Microsoft.SqlServer.Management.Smo类获取表的创建脚本。我想让脚本里面有GO语句。但是SMO忽略了所有GO语句和数据库中的使用。
例如:-创建从management .生成的脚本
USE [Testing_BlankData_1_Staging]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[stgUser](
[UserName] [nvarchar](100) NOT NULL,
[FullName] [nvarchar
是否为将there语句分组到BEGIN...END块下定义了任何规则?
因为当我在CASE语句或IIF语句中尝试CASE块时,它会失败。
我需要BEGIN...END块,因为我想在CASE结果下执行多个操作。
SELECT
CASE @ChargePaid
WHEN 1 THEN
BEGIN
SELECT 'Paid'
END
WHEN 0 THEN
BEGIN
SELECT 'Not Paid'
END
我创建了以下函数来计算两点之间的距离:
CREATE FUNCTION [fnCalcDistanceKM](@lat1 FLOAT, @lat2 FLOAT, @lon1 FLOAT, @lon2 FLOAT)
RETURNS FLOAT
AS
BEGIN
RETURN ACOS(SIN(PI()*@lat1/180.0)*SIN(PI()*@lat2/180.0)+COS(PI()*@lat1/180.0)*COS(PI()*@lat2/180.0)*COS(PI()*@lon2/180.0-PI()*@lon1/180.0))*6371
END
但是当我运
使用vs2008查询构建器,我尝试执行一个查询,该查询获取"TOP“命令的参数,然后遇到错误"Error in top expression”
作品:
SELECT TOP 5 * FROM dbo.SomeTable
WHERE SomeColumn = SomeValue
不起作用:
SELECT TOP @param1 * FROM dbo.SomeTable
WHERE SomeColumn = SomeValue
我创建了一个sql server 2008数据库项目。当我编辑默认的Script.PostDeployment.sql (或任何.sql)脚本时,VS中的Transact-SQL工具栏将被高亮显示并处于活动状态,并且没有编译错误。当我右键单击该项目并单击“将其转换为Server数据库项目”时,我将开始收到错误,并且我的Transact-SQL编辑器不再高亮显示/激活。例如,我遇到的一个错误是在Script.PostDeployment.sql中,它说:r .\myscript.sql命令无效,因为:r不是有效的语法。这是一个新项目(尽管我试图导入一个带有工具栏的数据库,但它也不识别任何一个表.
每个表都有一个列RECNUM。它们是(十进制(28,0),而不是null)。这就是我要参加的地方。我想在CAUNIT中选择DESC列。它是(varchar(28,0),null)。当我运行我的查询时,我得到:
Msg 156,第15级,状态1,第1行,在关键字'DESC‘附近不正确的语法。以下是我的查询:
SELECT CDCLSVC.UNIT_ID,CAUNIT.DESC
FROM CDCLSVC
LEFT JOIN CAUNIT
ON CDCLSVC.RECNUM = CAUNIT.RECNUM
在我们即将更改5TB数据库中的一些大型表时,我发现自己需要一个可以在线执行的操作列表,这些操作需要在运行时保持完整的锁。理想情况下,这个列表还应该包含关于哪些语句需要SCH-M锁在结束时提交的信息。
虽然我在微软( Microsoft )的时候就认识了其中的大多数人,但我惊讶地发现,在从SQL Server 2005到2014年CTP的发展过程中,我没有找到一份公开的在线操作列表。
有人有这样的名单吗?如果没有,我可能会决定创建它。
我试图安排一个sql查询失败,而我得到的错误是,
Update failed because the following SET have incorrect settings:'QUOTED_IDENTIFIER'. Verify that SET Options are correct for use with indexed views and/or indexes on computed columns and/or filtered indexes and/or query notifications and/or xml data type methods and/
假设您试图运行以下查询:
SELECT *
FROM dbo.Customers c
WHERE id = @id
AND dateTimeCreated = @date
您将得到一个类似于Must declare the scalar variable "@id".的错误消息
据我所知,这发生在查询的初始解析过程中,在执行任何代码之前。
是否可以让Server一次报告所有缺少的变量,或者这就是查询解析器的工作方式?
我正在运行一条select语句,其中包含以下CASE子句:
SELECT
(CASE MyTable.IsBook WHEN 1 THEN 'B' ELSE 'M' END) AS IsBookOrManuscript
FROM MyTable;
我在两台不同的物理服务器上恢复了相同的数据库(模式和数据),这两台服务器分别使用build版本10.50.4276.0和SQL Server 2014运行SQL Server 2008 R2。
在SQL Server 2014中运行时,查询将按预期返回。在SQL Server2008R2中运行时,出现错误
例如,我的sql server过程中有以下代码:
CREATE PROCEDURE Test
Begin
Update table1
set col1 = 'a'
Update table2
set col2 = 15
select * from table3
delete from table4
where col4 = 5;
end
当我执行测试程序时,我有多少事务?begin end是否创建新事务?如果不是,我是否会有4个隐式事务?
我有一个存储过程,它使用一个临时表,##temp使用select * into ##temp from tablename动态创建。
我遇到的问题是,这个存储过程似乎只在运行查询的那一刻删除或使其可用,尽管##是全局的,据我所知,其他用户可以使用它。
我使用SSRS来提取存储过程,并使用钻取从这个报告到同一个报告,第一个只显示图表,第二个报告是相同的存储过程,它通过参数使用动作链接,但第二个报告不识别##temp表。
现在您已经有了背景,有什么方法可以解决这个问题,还是有一个更好的方法来解决这个问题,请记住,我们目前还没有数据仓库,所以只需要使用临时表来完成工作。
谢谢
与Oracle一样,SQL Server也支持存储过程中的参数默认值。Oracle语法:
CREATE OR REPLACE PROCEDURE p_default (
p_in_number IN number := 0,
p_out_number OUT number,
p_in_varchar IN varchar2 := '0',
p_out_varchar OUT varchar2,
p_in_date IN date := date '1981-07-10',
p_out_date OU
我只想得到一个表"b“的值,如果表"a”“value is "-”如果表“b的值为空,则得到表"a”的值“即使它是"-”
Microsoft Access在此查询中表示“缺少运算符”:
SELECT ts.data_generacio,
ts.estat,
ts.exercici,
Month(tsl.data) AS Mes,
Day(tsl.data) AS Dia,
tsl.data,
tsl.cod_treb,