Stored Procedure And A DB With Collate That Is CI...
Oct 12, 2006
i have a sp that when i add to a CS database it doesnt give me an error but when i add to a CI database it errors out.
what can i do to it to make it not error on the CI situtation?
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
-- Accounts Payable
ALTER PROCEDURE [dbo].[isp_ap_calc_apt_totals]
@p_comp char(2),
@p_vend char(6),
@p_asofdate char(8)
as
if (@p_asofdate <= '00000000')
begin
set @p_asofdate = '99999999'
end
delete from XAPAPTTOT
where xapt_comp = @p_comp and xapt_vend = @p_vend and xapt_asof_date = @p_asofdate
insert into XAPAPTTOT
select apph_comp, apph_vend, apph_type, apph_id, @p_asofdate,
sum(apph_paymnts),
sum(apph_discts),
sum(apph_adjts),
count(apph_paymnts),
sum(apph_paymnts)+ sum(apph_discts) + sum(apph_adjts) +
(select apt_gross from APTRANF
where apt_comp = @p_comp and apt_vend = @p_vend
and apt_type = apph_type and apt_id = apph_id),
0,
max(str(yy,4) + replace(str(mm,2),' ','0') + replace(str(dd,2),' ','0'))
from APPHISTF
where apph_comp = @p_comp and apph_vend = @p_vend
and str(yy,4) + replace(str(mm,2),' ','0') + replace(str(dd,2),' ','0') <= @p_asofdate
group by apph_comp, apph_vend, apph_type, apph_id
update XAPAPTTOT
set xapt_last_payck =
(select max(apph_payck) from APPHISTF
where apph_comp = xapt_comp and apph_vend = xapt_vend and apph_type = xapt_type
and apph_id = xapt_id
and str(yy,4) + replace(str(mm,2),' ','0') + replace(str(dd,2),' ','0') = xapt_last_paydt )
where xapt_comp = @p_comp and xapt_vend = @p_vend and xapt_asof_date = @p_asofdate
Hi all - I'm trying to optimized my stored procedures to be a bit easier to maintain, and am sure this is possible, not am very unclear on the syntax to doing this correctly. For example, I have a simple stored procedure that takes a string as a parameter, and returns its resolved index that corresponds to a record in my database. ie exec dbo.DeriveStatusID 'Created' returns an int value as 1 (performed by "SELECT statusID FROM statusList WHERE statusName= 'Created') but I also have a second stored procedure that needs to make reference to this procedure first, in order to resolve an id - ie: exec dbo.AddProduct_Insert 'widget1' which currently performs:SET @statusID = (SELECT statusID FROM statusList WHERE statusName='Created')INSERT INTO Products (productname, statusID) VALUES (''widget1', @statusID) I want to simply the insert to perform (in one sproc): SET @statusID = EXEC deriveStatusID ('Created')INSERT INTO Products (productname, statusID) VALUES (''widget1', @statusID) This works fine if I call this stored procedure in code first, then pass it to the second stored procedure, but NOT if it is reference in the second stored procedure directly (I end up with an empty value for @statusID in this example). My actual "Insert" stored procedures are far more complicated, but I am working towards lightening the business logic in my application ( it shouldn't have to pre-vet the data prior to executing a valid insert). Hopefully this makes some sense - it doesn't seem right to me that this is impossible, and am fairly sure I'm just missing some simple syntax - can anyone assist?
I executed them and got the following results in SSMSE: TopSixAnalytes Unit AnalyteName 1 222.10 ug/Kg Acetone 2 220.30 ug/Kg Acetone 3 211.90 ug/Kg Acetone 4 140.30 ug/L Acetone 5 120.70 ug/L Acetone 6 90.70 ug/L Acetone ///////////////////////////////////////////////////////////////////////////////////////////// Now, I try to use this Stored Procedure in my ADO.NET-VB 2005 Express programming: //////////////////--spTopSixAnalytes.vb--///////////
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim sqlConnection As SqlConnection = New SqlConnection("Data Source = .SQLEXPRESS; Integrated Security = SSPI; Initial Catalog = ssmsExpressDB;")
Dim sqlDataAdapter As SqlDataAdapter = New SqlDataAdaptor("[spTopSixAnalytes]", sqlConnection)
'Pass the name of the DataSet through the overloaded contructor
'of the DataSet class.
Dim dataSet As DataSet ("ssmsExpressDB")
sqlConnection.Open()
sqlDataAdapter.Fill(DataSet)
sqlConnection.Close()
End Sub
End Class ///////////////////////////////////////////////////////////////////////////////////////////
I executed the above code and I got the following 4 errors: Error #1: Type 'SqlConnection' is not defined (in Form1.vb) Error #2: Type 'SqlDataAdapter' is not defined (in Form1.vb) Error #3: Array bounds cannot appear in type specifiers (in Form1.vb) Error #4: 'DataSet' is not a type and cannot be used as an expression (in Form1)
Please help and advise.
Thanks in advance, Scott Chang
More Information for you to know: I have the "ssmsExpressDB" database in the Database Expolorer of VB 2005 Express. But I do not know how to get the SqlConnection and the SqlDataAdapter into the Form1. I do not know how to get the Fill Method implemented properly. I try to learn "Working with SELECT Statement in a Stored Procedure" for printing the 6 rows that are selected - they are not parameterized.
I have some code that I need to run every quarter. I have many that are similar to this one so I wanted to input two parameters rather than searching and replacing the values. I have another stored procedure that's executed from this one that I will also parameter-ize. The problem I'm having is in embedding a parameter in the name of the called procedure (exec statement at the end of the code). I tried it as I'm showing and it errored. I tried googling but I couldn't find anything related to this. Maybe I just don't have the right keywords. what is the syntax?
CREATE PROCEDURE [dbo].[runDMQ3_2014LDLComplete] @QQ_YYYY char(7), @YYYYQQ char(8) AS begin SET NOCOUNT ON; select [provider group],provider, NPI, [01-Total Patients with DM], [02-Total DM Patients with LDL],
Have an old DB (6.5) Upgrade to (8.0). And when i make a script from the SQL.8 to the backup server i gett Collate Errors. So i wonder if there are someway to script the Table without the Collate´s or if i can make som settings on the Backup server so it will accept Collate in the script..
I have a sub that passes values from my form to my stored procedure. The stored procedure passes back an @@IDENTITY but I'm not sure how to grab that in my asp page and then pass that to my next called procedure from my aspx page. Here's where I'm stuck: Public Sub InsertOrder() Conn.Open() cmd = New SqlCommand("Add_NewOrder", Conn) cmd.CommandType = CommandType.StoredProcedure ' pass customer info to stored proc cmd.Parameters.Add("@FirstName", txtFName.Text) cmd.Parameters.Add("@LastName", txtLName.Text) cmd.Parameters.Add("@AddressLine1", txtStreet.Text) cmd.Parameters.Add("@CityID", dropdown_city.SelectedValue) cmd.Parameters.Add("@Zip", intZip.Text) cmd.Parameters.Add("@EmailPrefix", txtEmailPre.Text) cmd.Parameters.Add("@EmailSuffix", txtEmailSuf.Text) cmd.Parameters.Add("@PhoneAreaCode", txtPhoneArea.Text) cmd.Parameters.Add("@PhonePrefix", txtPhonePre.Text) cmd.Parameters.Add("@PhoneSuffix", txtPhoneSuf.Text) ' pass order info to stored proc cmd.Parameters.Add("@NumberOfPeopleID", dropdown_people.SelectedValue) cmd.Parameters.Add("@BeanOptionID", dropdown_beans.SelectedValue) cmd.Parameters.Add("@TortillaOptionID", dropdown_tortilla.SelectedValue) 'Session.Add("FirstName", txtFName.Text) cmd.ExecuteNonQuery() cmd = New SqlCommand("Add_EntreeItems", Conn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Add("@CateringOrderID", get identity from previous stored proc) <------------------------- Dim li As ListItem Dim p As SqlParameter = cmd.Parameters.Add("@EntreeID", Data.SqlDbType.VarChar) For Each li In chbxl_entrees.Items If li.Selected Then p.Value = li.Value cmd.ExecuteNonQuery() End If Next Conn.Close()I want to somehow grab the @CateringOrderID that was created as an end product of my first called stored procedure (Add_NewOrder) and pass that to my second stored procedure (Add_EntreeItems)
I have a stored procedure and in that I will be calling a stored procedure. Now, based on the parameter value I will get stored procedure name to be executed. how to execute dynamic sp in a stored rocedure
at present it is like EXECUTE usp_print_list_full @ID, @TNumber, @ErrMsg OUTPUT
I want to do like EXECUTE @SpName @ID, @TNumber, @ErrMsg OUTPUT
I am new to Stored Procedure, so I want to find out what is COLLATE Latin1_General_BIN means?
For example:
Declare @Var_Tbl Table (CUSTID INT NOT NULL, FIRSTNAME VARCHAR(20) COLLATE Latin1_General_BIN NOT NULL, CUSTOMER VARCHAR(9) COLLATE Latin1_General_BIN NOT NULL )
I am attempting an import of an SQL DB from a local MSDE SQL Server to an SQLServer 2000. I used the Web Data Administrator to create an export file, and then I wanted to perform an import to the actual server. I get the error "Syntax error near 'COLLATE'". I don't know much about syntax when it comes to this. Here is a snippet from there. I am new to this, so I hope someone out there can help me out. CREATE DATABASE [NewDB] ON (NAME = N'NewDB', FILENAME = N'CORRECTFILEPATH' , SIZE = 3, FILEGROWTH = 10%) LOG ON (NAME = N'NewDB_log', FILENAME = N'CORRECTFILEPATH' , SIZE = 1, FILEGROWTH = 10%) COLLATE SQL_Latin1_General_CP1_CI_AS GO All the "N" don't look like they belong, but they have been added throughout the entire SQL document.
Hi, I have a SQL Server for a SAP database with the collationSQL_Latin1_General_CP850_BIN. When I connect to that server (or, inthis example, to another server with the SQL_Latin1_General_CP850_BINcollation) and execute a select, the accents seem weird:select t.TEXTfrom [GC-SAP02].P01.p01.AGR_TEXTS twhere t.MANDT = '300'and t.SPRAS = 'E'and t.AGR_NAME = 'ZCD_GEST_DEUDA_PATENTE_SD'TEXT-----------------------------------Gesti¾n de deudas patentes en SD UP(1 row(s) affected)But if I connect to a "normal" SQL Server with aSQL_Latin1_General_CP1_CI_AS collation, and execute the same selectthru a linked server:TEXT-----------------------------------Gestión de deudas patentes en SD UP(1 row(s) affected)I need to perform the select connected to theSQL_Latin1_General_CP850_BIN and get the results as I were connected tothe SQL_Latin1_General_CP1_CI_AS server. I tried with cast and collate,but I can't get it to work:select t.TEXT collate SQL_Latin1_General_CP1_CI_ASfrom [GC-SAP02].P01.p01.AGR_TEXTS twhere t.MANDT = '300'and t.SPRAS = 'E'and t.AGR_NAME = 'ZCD_GEST_DEUDA_PATENTE_SD'Any ideas??? Thanks in advance for your help !!!Manuel Daponte
I have a stored procedure that calls a msdb stored procedure internally. I granted the login execute rights on the outer sproc but it still vomits when it tries to execute the inner. Says I don't have the privileges, which makes sense.
How can I grant permissions to a login to execute msdb.dbo.sp_update_schedule()? Or is there a way I can impersonate the sysadmin user for the call by using Execute As sysadmin some how?
Has anyone encountered cases in which a proc executed by DTS has the following behavior: 1) underperforms the same proc when executed in DTS as opposed to SQL Server Managemet Studio 2) underperforms an ad-hoc version of the same query (UPDATE) executed in SQL Server Managemet Studio
What could explain this?
Obviously,
All three scenarios are executed against the same database and hit the exact same tables and indices.
Query plans show that one step, a Clustered Index Seek, consumes most of the resources (57%) and for that the estimated rows = 1 and actual rows is 10 of 1000's time higher. (~ 23000).
The DTS execution effectively never finishes even after many hours (10+) The Stored procedure execution will finish in 6 minutes (executed after the update ad-hoc query) The Update ad-hoc query will finish in 2 minutes
I created DB Generator and want to enable user choose collate which desired. So I would like to retreive all collate in SQL Server to show for user can see all available collate.
Hi,Good morning to All. I have some doubt.I cannot do anything without knowing the reason why we are doing that particular thing. Any way, my doubt is: While creating table, in some places I see COLLATE clause. For example, recently I have seen this. CREATE TABLE dbo.OrderDetails( OrderDetailID INT IDENTITY(1,1) NOT NULL, ItemNumber VARCHAR(20) COLLATE SQL_Latin1_General_CP1_CI_As NULL, Qty INT NULL)ON [PRIMARY] In the above table, why the Collate clause for ItemNumber column? What is the advantage with that clause?I have seen sql server help for this. I have found 1011 results for the query SELECT * FROM fn_helpcollations().Then I searched for SQL_Latin related collations using: SELECT * FROM fn_helpcollations() where name like 'SQL_Latin%'I have found 31 results.How can I know which clause i have to use for which type of query? Can anybody please tell answers for all these doubts? Thanks in advance. Regards,Ashok kumar.
I am getting an error inserting a simple text file into a SQL2000 database table. The text file is one column, comma delimited, and the DTS package to insert it into a table fails citing an error executing a 'COLLATE' statement. Thanks for the help!
We're upgrading to SQL Server 2005, and we've restored databases from SQL Server 2000 to the development server (SQL Server 2005). Part of what we need to do is alter the database collation to SQL_Latin1_General_CP1_CI_AS; our SQL Server 2000 server is case-sensitive.
My initial attempts to alter the database;
alter database RGDWDEV collate SQL_Latin1_General_CP1_CI_AS
failed because of the presence of computed columns and user functions. So, I wrote scripts to save the definitions of the computed columns and functions, and wrote scripts to drop them. Now that they are gone, I expected to be able to successfully execute the above 'alter database' statement, but I am now getting this error;
Msg 1505, Level 16, State 1, Line 1 CREATE UNIQUE INDEX terminated because a duplicate key was found for object name 'sys.sysschobjs' and index name 'nc1'. The duplicate key value is (0, 1, DISB_ADJ). Msg 5072, Level 16, State 1, Line 1 ALTER DATABASE failed. The default collation of database 'RGDWDEV' cannot be set to SQL_Latin1_General_CP1_CI_AS.
Hi, i'm having a problem with my database. When i created it i specifie the collate sql_latin1_general_cp1_ci_as but now that i'm working on my domain server, the server only acepts databases with the collate latin1_general_ci_as so i tried to change my current (on my localhost) collate but i'm always getting this error:
Msg 5030, Level 16, State 2, Line 2
The database could not be exclusively locked to perform the operation.
Msg 5072, Level 16, State 1, Line 2
ALTER DATABASE failed. The default collation of database 'databasexpto' cannot be set to Latin1_General_CI_AS.
Hi, I'm trying to do a search over a table, the problem is that the default collate applied by this transofrmation is case sensitive... i need a non case sensitive collate. If i edit the SQL Statement to set another Case sensitive collate manually inside the statement, the problem is that if a field (wich is involved in search transformation ) has a null value, the transformation doesnt find any record (it doesnt happens if a dont introduce manually the collate in the statement, null values dont rise any error, and the transofrmation works fine).
Tried a few ways and I can ge this to work at the end in then WHEN part. Just struggling to put this together to be accepted as a CASE WHEN statement, probably missing the obvious.
Case when Postcode like '%[abcdefghijklmnopqrstuvwxyz%]' then 'Lowercase Postcode' else 'Postcode OK' end as [DQPostcode]
collate Latin1_General_CS_AS
Simple terms looking for all instances of Lowercase characters in the Postcode field
I do not have a backup of the model database and have had to rebuild SQL Server 2000 once already. All my databases except model and tempdb have the collation SQL_Latin1_General_CP1_CI_AS those two have Latin1_General_CI_AS.
During SQL rebuild I've restored over master and msdb and they work fine. Only came across problem with stored procedure and I'm lost as to how to alter model without a backup of it.
Any easy way to change model collation? The command listed in subject fails as it is a system table.
Is it as simple as going into single user mode and trying that command again?
I build a asp.net web site on my laptop and accessting data with my vb.net code from SQL server 2005 which is installed on windows 2003 R2 server. All works fine.
but when I hosted this website on the IIS server which is physically the same Windows 2003 Server R2 with SQL Server 2005, the sql queries are not executing well and not getting the result. After some R&D What I found is that the Column Names CASE in the SQL Database and in my SQL Query is not matching. I find that SQL server 2005 collate is allready set to SQL_Latin1_General_CP1_CI_AS. I have lots of pages with lots of sql queries and near about 500 SQL Databases, and its quiet tuff to match all columns CASING.
1. How can I change the collate of windows 2003 server R2?
or
2. How can I run my wesite on this Server properly?
3. What is actually going on (website working on Windows XP but not working well on Windows 2003 server).
I am trying to debug stored procedure using visual studio. I right click on connection and checked 'Allow SQL/CLR debugging' .. the store procedure is not local and is on sql server.
Whenever I tried to right click stored procedure and select step into store procedure> i get following error
"User 'Unknown user' could not execute stored procedure 'master.dbo.sp_enable_sql_debug' on SQL server XXXXX. Click Help for more information"
I am not sure what needs to be done on sql server side
We tried to search for sp_enable_sql_debug but I could not find this stored procedure under master.
Some web page I came accross says that "I must have an administratorial rights to debug" but I am not sure what does that mean?
I have a query however i am getting the following error message “Msg 447, Level 16, State 0, Line 1 Expression type numeric is invalid for COLLATE clause.“
This is my query
SELECT sjo.ID, sjo.MID, sjo.Trade_Association_Name, da1.Account_Name As Trade_Association_Name, substring(do.[MM-CHN-AGENT],2,12) as Mass_Agent_Chain_No,
[Code] ....
And Dan.Stg_Jitter_Opp2 table consists of the following
ColumnNameData Type Idvarchar(50) Mid numeric(18, 0) RecordTypeIDvarchar(50) Trade_Association_Name varchar(50)
And [FDMS].[SalesForce].[DailyAccounts]table consists of the following
ColumnNameData Type Idint Account_Idvarchar(18) account_Name varchar(150) mid_externalvarchar(15) Mid_internalvarchar(15)
I have a stored procedure 'ChangeUser' in which there is a call to another stored procedure 'LogChange'. The transaction is started in 'ChangeUser'. and the last statement in the transaction is 'EXEC LogChange @p1, @p2'. My questions is if it would be correct to check in 'LogChange' the following about this transaction: 'IF @@trancount >0 BEGIN Rollback tran' END Else BEGIN Commit END. Any help on this would be appreciated.
What is 'COLLATE SQL_Latin1_General_CP1_CI_AS'? I am new to SQLServer, and couldn't find much information on the Web. Also, I am trying to understand user defined data types. For example,
In the following example, what is '[Price_DT]' data type? and how would it be referenced at the time of 'INSERT'.
CREATE TABLE [dbo].[Dist_Orders_Master_Index] ( [SubTotal] [Price_DT] NOT NULL , [Tax] [Price_DT] NOT NULL ) ON [PRIMARY]